我有两个针对我的应用程序的根活动的intent过滤器
<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。)
答案 0 :(得分:3)
您需要定义活动的启动方式。
如果您希望自己的活动始终在同一任务上启动,请使用:android:alwaysRetainTaskState="true"
和android:taskAffinity="your.task.name"
另请查看android:launchMode="singleTop"
和android:launchMode="singleTask"
,以进一步了解活动的启动方式。