我的应用包含许多活动。其中一个活动响应NFC意图过滤器以及标准意图,但是,此活动是在其自己的任务中启动,而不是与应用程序执行相同的任务。启动NFC意图时,应用程序不一定会运行,但如果是,我希望活动在同一任务中启动,以确保无缝的用户体验。目前,该应用程序表现得好像有两个正在运行。
以下是我的NFC活动的清单:
<activity
android:name="name.subname.app.activity.ItemSummaryActivity"
android:label="@string/title_activity_item_summary" >
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<data android:mimeType="application/vnd.name.nfcdemo" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
是否可以在现有任务中启动活动(如果存在)?
答案 0 :(得分:2)
我在这里看到两个选项:
1)将android:launchMode="singleTask"
添加到清单中的活动标记:
<activity
android:name="name.subname.app.activity.ItemSummaryActivity"
android:label="@string/title_activity_item_summary"
android:launchMode="singleTask" >
系统在新任务的根目录下创建活动并将意图路由到该任务。但是,如果活动的实例已存在,系统会通过调用其onNewIntent()方法将意图路由到现有实例,而不是创建新实例。
2)向startActivity()
意图提供Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT
标志。但是,如果活动是由NFC触发的(并且使用此选项不可行),请考虑@NFC guy必须说here的内容。