应用程序被杀死时Android多项活动任务

时间:2013-08-12 23:16:03

标签: android android-activity android-recents

该应用程序有两项活动任务:

  • 任务1
    • Activity A(发射器)
    • Activity B
  • 任务2
    • Activity C< ----这就是示例中堆栈所指向的位置。

现在尝试:

  1. 转到最近的应用程序carrousel(您可以通过点击较新手机中Home按钮右侧的按钮来了解)。
  2. 将所有应用扫出。
  3. 您的应用程序被终止,并且创建了一个新的Application实例(Application#onCreate()被调用)。
  4. Android会尝试显示 TASK 2 的活动C.
  5. 有趣的是,如果你在这里:

    • 任务1
      • Activity A(发射器)
      • Activity B< ---- here

    ...你确实重复了这个场景,你的应用程序被杀了,而且我认为它应该回到主屏幕。

    简而言之,看起来Android在杀死应用程序时并未清除所有任务。这只适用于非常精确的情况。转到设置>应用程序>你的应用>强制停止,您将看到它确实清除了所有任务。

    我们可以做些什么来强制Android在杀死应用程序时杀死所有任务?

2 个答案:

答案 0 :(得分:1)

在查看Android SDK上最新应用的处理方式后(请参阅此处第135行http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/com/android/systemui/recent/RecentTasksLoader.java?av=f#135

我理解(并测试过)如果您为Activity C提供图标和标签,则:

<activity
    android:name=".ActivityC"
    android:label="Activity Title"
    android:icon="@drawable/ic_icon"
</activity>

您将在最近的应用程序转盘中看到2个应用程序(确实是任务)。

现在我认为,对于我的用例,我不应该使用不同的任务,因为它几乎被视为Android的另一个应用程序。

答案 1 :(得分:1)

要为独立工作创建任务。这就是为什么它说singleInstance和singleTask在新任务的ROOT处启动Activity(作为该特定任务的根活动)。因为当您从概览屏幕单击其中一个任务时,Android系统需要一种启动任务的方式(在这种情况下,它需要启动器/根活动)。

所以,你杀了一个任务,它不应该杀死另一个任务,因为用户可能想要稍后切换那个INDEPENDENT应用程序任务吗?

但由于您需要正确处理(主要是导航和用户体验)单独的任务,因此很难管理这种行为。所以在你采取行动之前先想想。 Android文档本身就是这样说的;

&#34;其他模式 - singleTask和singleInstance - 不适合大多数应用程序,&#34;