我的應用程序(遊戲)有兩個活動:顯示徽標的啓動器活動,初始化並且是我的應用程序的主要活動,以及執行3D渲染並由啓動器活動啓動的客戶端活動。因此,當應用程序運行時,後臺堆棧是:launcher |客戶。點擊鏈接時如何啓動(當應用程序未運行時)或切換(當應用程序正在運行時)到Android應用程序
我想用一個鏈接是什麼:
,如果應用程序尚未啓動,點擊鏈接應該先啓動發射活動,然後發射活動啓動客戶端活動。最後,遊戲運行在客戶端活動中。
如果應用程序正在運行(在客戶端活動中運行),則單擊該鏈接應該切換到並通知應用程序該鏈接已被點擊(無論是在啓動器還是客戶端都可以,在客戶端更好),而不是啓動另一個發射器活動。
我曾嘗試:
<activity android:name=".Launcher" android:label="TestApp">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="myapp" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
<activity android:name=".Client" android:label="TestApp">
</activity>
而且意圖過濾器的工作原理當我點擊鏈接:
我在發射胡亞蓉的聲明增加了一個意圖過濾器: myapp://,啓動器活動啓動。但問題是啓動器活動是從瀏覽器的任務開始的。如果我已經有一個應用程序正在運行,那麼將會有一個新的應用程序實例在瀏覽器後端堆棧中啓動,而不是切換到已經運行的應用程序。
然後我嘗試將屬性
android:launchMode="singleTask"
添加到活動聲明中。然後單擊該鏈接將啓動一個新任務,並啓動該任務中的啓動器活動。如果應用程序已經運行,正在運行的任務將切換到前臺,這就是我所期望的。但問題是,應用程序任務的後退堆棧從「啓動器」變爲「啓動器」,客戶端活動消失。
我希望我的應用只有一個實例。如果應用程序未運行,則鎖定鏈接應該啓動應用程序,否則切換到應用程序而不會影響應用程序的當前運行狀態。
我搜索了很多,但沒有找到解決方案,請幫助我,謝謝。
感謝您的鏈接。但我想我已經在鏈接助手中手動完成了所有這些步驟,就像在我的帖子中一樣,但它並沒有解決問題。 –