3

我有我的應用程序的根活動如何使多個意圖過濾器開始在相同的任務活動

<activity 
    android:name=".MyActivity" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Dialog" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
    <intent-filter> 
     <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 
     <data android:mimeType="application/com.example.package" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

一個過濾器是用於啓動從啓動器圖標的應用雙意圖過濾器,另一種是當用戶觸摸NFC標籤時啓動該活動。

我希望當用戶從應用程序中的任何活動按下HOME按鈕時,下一次他按下啓動器圖標或觸摸NFC標籤時,應用程序必須恢復(與每個應用程序一樣)。

但是,這是發生了什麼: 當用戶點擊NFC標籤時,第一個活動啓動。然後,他駕駛進一步的活動。按HOME。再次點擊NFC標籤,啓動第一個活動(MyActivity),並清除先前的堆棧。

另一方面, 當用戶選擇啓動器圖標,導航到進一步的活動,按HOME鍵,然後再次按下啓動器圖標,MyActivity作爲堆棧頂部的新活動啓動。 (現在在堆棧中有兩個MyActivities)。

回答

3

您需要定義活動啓動的方式。 如果你希望你的活動總是在相同的任務使用啓動:android:alwaysRetainTaskState="true"android:taskAffinity="your.task.name"

而且採取的活動是如何開展進一步的控制上android:launchMode="singleTop"android:launchMode="singleTask"看看。