为什么excludeFromRecents删除所有活动?

我的应用程序有两个入口点(MainActivity和FromNotificationActivity)。

我想MainActivity出现在最近的任务,但不是FromNotificationActivity)

没有在清单中声明,如果我做…

  • 主要活动
  • 背部
  • FromNotificationActivity
  • 背部

…我发现最近的任务列出了FromNotificationActivity

如果我在清单中的FromNotificationActivity中添加android:excludeFromRecents="true" ,并重复相同的顺序,我在最近的列表中找不到任何东西

我必须调用什么咒语,以便在上述步骤之后,我在最近的列表中获得MainActivity。

默认情况下,应用程序的所有活动具有相同的亲和力。 从概念上讲,具有相同亲和力的活动属于同一个任务。 因此,在这种情况下, MainActivityFromNotificationActivity属于同一个任务。 android:excludeFromRecents确保任务不在最近的应用程序中列出。 这就是为什么当android:excludeFromRecents被设置为FromNotificationActivityMainActivity从历史logging中消失。

解决scheme:使用android:taskAffinity为这两个活动指定不同的任务。 如果该任务不应该显示在历史logging中,则使用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> 

从文档

机器人:excludeFromRecents
是否应该从最近使用的应用程序列表(“最近的应用程序”)中排除此活动启动的任务。 也就是说,当此活动是新任务的根活动时,此属性将确定该任务是否不应出现在最近的应用程序列表中。 如果任务应该从列表中排除,则设置为“真” 如果应该包括“假”的话。 默认值是“false”。

所以这不是活动,而是这个标志所控制的任务。 您没有在清单中发布活动元素,但是我的猜测是这两个活动在同一个任务中运行。 将launchMode更改为singleTask,他们都应该完成这项工作。

你应该使用从First_Activity到Second_Activity的意图标志。 无需在清单中声明任何东西。 通过使用这个代码,这个活动将会是你最近的活动。

 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(); 

希望它会有用的..