Android 5 - Activity 在 onFinish 后发送到后台

Android 5 - Activity gets send to background after onFinish

我想销毁一个 Activity 并调用 finish() 方法来这样做。在低于 Android 5.0.2 的版本中,Activity 实际上被销毁了,但在高于 Android 的版本中,它徘徊在后台而不是结束。 但是 onDestroy() 仍然会被调用。无论 OS 可能想说什么,是否有我必须设置的标志或 activity 实际被销毁的东西?

But my most notable observation is that the activity I want to be destroyed can be selected in the list of open tasks on devices

当然可以。多年来一直如此。最近任务列表(现在称为概览屏幕)显示最近使用的任务。这对于高于 5.0.2 的 Android 版本来说并不新鲜。例如,以下屏幕截图显示了 Galaxy Nexus 运行 Android 4.1.2:

中的近期任务列表

我从冷启动启动此设备,从主屏幕启动联系人 ("People") 应用程序,按 BACK 退出并销毁 activity,然后调出最近-任务列表并截图。

And that is not what I expect after calling finish() on an activity, when it is not a single activity application. One of my reasons to not expect that behavior is that on devices below Android 5.0.2 the said behaviour does not apply.

那么你在 space-时间连续体中发生了断裂并徘徊在一个平行宇宙中,你意想不到的行为是 Android 多年来一直在工作的方式以及 ~1十亿人习惯了。还有,在这个平行宇宙里,我没有头发,好懊恼

有一些方法可以阻止您的 activity 出现在最近的任务列表中(例如,android:excludeFromRecents)。但是,这不是典型的行为。

How can I make sure that only one activity is shown in this list at any given time?

列表是任务,不是活动。您的 activity 会在列表中多次出现的唯一原因是您的活动在多个任务的 BACK 堆栈中处于最顶层。如果默认设置不适合您,您可以采取措施尝试管理此问题(例如,android:taskAffinity)。