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 标签时启动 Activity。

我希望当用户从应用程序中的任何活动中按下 HOME 按钮时,下次他按下启动器图标或触摸 NFC 标签时,应用程序必须恢复(每个应用程序都是如此)。

但这就是正在发生的事情:当用户点击 NFC 标签时,会启动第一个活动。然后他导航到进一步的活动。按主页。再次点击 NFC 标签,启动第一个活动(MyActivity),并清除之前的堆栈。

另一方面,当用户选择启动器图标,导航到更多活动,按 HOME,然后再次按启动器图标时,MyActivity 作为堆栈顶部的新活动启动。(现在堆栈中有两个 MyActivity)。

4

1 回答 1

3

您需要定义活动的启动方式。如果您希望您的活动始终在同一任务上启动,请使用:android:alwaysRetainTaskState="true"android:taskAffinity="your.task.name"

还要查看android:launchMode="singleTop"android:launchMode="singleTask"进一步控制活动的启动方式。

于 2012-10-24T11:10:13.207 回答