我的应用有两个入口点(MainActivity和FromNotificationActivity)。
我希望MainActivity出现在最近的任务中,但不是FromNotificationActivity)
如果我在清单中没有宣布任何内容......
...我发现在最近的任务中列出了FromNotificationActivity
如果我在清单中将android:excludeFromRecents="true"
添加到FromNotificationActivity并重复相同的序列,我会在最近的列表中找到 nothing 。
我必须调用什么咒语,以便在上述步骤序列之后,我在最近的列表中获得MainActivity。
答案 0 :(得分:40)
默认情况下,应用程序的所有活动都具有相同的亲缘关系。具有相同亲和力的活动在概念上属于同一任务。因此,在这种情况下,MainActivity
和FromNotificationActivity
都属于同一个任务。 android:excludeFromRecents
确保最近的应用中未列出任务。这就是android:excludeFromRecents
true
FromNotificationActivity
为MainActivity
,android:taskAffinity
从历史记录中消失的原因。
<强>解决方案:强>
使用android:excludeFromRecents
为这两个活动指定不同的任务。如果该任务不应显示在历史记录中,请FromNotificationActivity
使用<activity
android:name="com.example.MainActivity"
android:label="@string/app_name"
android:taskAffinity=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.example.FromNotificationActivity"
android:label="@string/notification_name"
android:taskAffinity=".NotificationActivity"
android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
。
{{1}}
答案 1 :(得分:5)
来自the docs
<强>机器人:excludeFromRecents 强>
此活动发起的任务是否应从最近使用的应用程序列表中排除(&#34;最近的应用程序&#34;)。也就是说,当此活动是新任务的根活动时,此属性确定该任务是否不应出现在最近的应用列表中。设置&#34; true&#34;如果任务应从列表中排除;设置&#34;假&#34;如果它应该包括在内。默认值为&#34; false&#34;。
所以它不是活动,而是该标志控制的任务。您没有在清单中发布活动元素,但我的猜测是这两个活动在同一个任务中运行。将launchMode更改为singleTask就可以完成这项工作。
答案 2 :(得分:0)
您应该使用从First_Activity到Second_Activity的intent标志。 无需在清单中声明任何内容。 通过使用此代码,将用于意图的活动将是您最近的活动。
Intent intent = new Intent(CONTEXT_OF_CURRENT_ACTIVITY, YOUR_ACTIVITY.class);
intent.putExtra("NAME", "VALUE");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
希望它有用..