我有一个简单的应用程序。第一个(启动)Activity 在 list 中标记为
android:launchMode="singleInstance"
The docs声明:
A "singleInstance" activity, on the other hand, permits no other activities to be part of its task. It's the only activity in the task. If it starts another activity, that activity is assigned to a different task (...)
因此,当我在 Android 5.1 上的三星设备上从第一个 (singleInstance
) Activity 启动第二个 Activity 时,点击概览按钮,结果符合预期:第二个 Activity 在自己的任务:
在运行 6.0.1 的 Nexus 5x 上(以及运行 Android 5.1 的模拟器上),第二个 Activity 似乎执行相同的任务:
这是什么原因呢?
三星设备的行为符合上述文档的预期,我这样说对吗?
三星真的做了一些其他公司没有做的正确的事情吗?
我的简单测试应用程序可以找到 here .
最佳答案
两种设备上的行为实际上是相同的。 singleInstance
应该为每个 Activity 打开一个新任务。在三星和 Nexus 上运行您的应用程序,将打开一个新任务。然而,最近的应用程序或概览屏幕在每台设备上的工作方式都不同(正如您所看到的,Nexus 中几乎没有所有应用程序或概览屏幕)。在 Nexus 上,新任务并不意味着概览屏幕中的新位置。它仍然会打开一个新任务,但打开它的任务将被置于后台并且可能不可见。在三星上,他们选择显示所有任务的背景或前景,这只是他们的设计选择。要在所有设备上获得您想要的行为,您需要使用 documentLaunchMode
Docs 。这保证了新任务将创建并且将作为新任务显示在概览屏幕中 more docs 。
关于android - 从 singleInstance Activity 启动的新 Activity 的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37963962/