递归启动任务时的奇怪行为

时间:2016-09-13 10:33:18

标签: android task history back

也许标题会引起一些混乱,但我找不到一个更好的方法来指出我的问题 我有3个活动,在清单文件中使用单独的taskAffinity定义(例如A,B,C)。首先,我启动活动A,启动任务A.然后按Home键,显示主屏幕。接下来,我启动活动B,启动任务B.在活动B的屏幕上有一个按钮,当单击时将启动活动C.此时堆栈如下(使用dumpsys命令)。 my.package.Home 是我自定义的Home应用程序。

  

近期任务:
   *最近#0:TaskRecord {421c0998#​​111 A = my.package.C U = 0 sz = 2}
   *最近#1:TaskRecord {42133508#110 A = my.package.B U = 0 sz = 2}
   *最近#2:TaskRecord {41cf77c0#1 A = my.package.Home U = 0 sz = 4}
   *最近#3:TaskRecord {428124d8#103 A = my.package.A U = 0 sz = 2}

在活动C上还有一个启动活动B的按钮,在从C启动B之后,任务堆栈被重新排序,从下面的dumpsys输出中得知。

  

近期任务:
   *最近#0:TaskRecord {42133508#110 A = my.package.B U = 0 sz = 2}
   *最近#1:TaskRecord {421c0998#​​111 A = my.package.C U = 0 sz = 2}
   *最近#2:TaskRecord {41cf77c0#1 A = my.package.Home U = 0 sz = 4}
   *最近#3:TaskRecord {428124d8#103 A = my.package.A U = 0 sz = 2}

然后问题是,从上面的状态,如果我按两次返回按钮,而不是按预期显示主屏幕,则显示活动A. 我在Android上有不错的体验,但不知道这种奇怪行为的背景是什么。任何人都可以帮我弄清楚这是设计行为还是Android的错误。如何绕过它获得我预期的行为?

更新:这似乎是Android 4.x的具体问题。在6.0设备上,使用相同的应用程序没有奇怪的行为。

1 个答案:

答案 0 :(得分:0)

尝试将自定义标志设置为清单文件上的活动以避免该问题

android:launchMode=["standard" | "singleTop" | "singleTask" | "singleInstance"]

你可以在这里查看每个人的意思

https://developer.android.com/guide/topics/manifest/activity-element.html