Android singleTask或singleInstance启动模式是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (91)

我有一个应用程序,其中包含一个列表作为其主要活动,然后您可以单击打开该项目的详细视图的项目。我也有一个类似于主要活动的搜索活动,并按预期工作。

singleTask和singelInstance启动模式似乎做我想要的,所以我不知道哪一个我应该用于这个目的,为什么?

提问于
用户回答回答于

从Android开发指南的应用基础页面:

默认情况下,应用程序中的所有活动都具有相互关联性 - 也就是说,他们都偏好属于同一个任务。 “singleInstance”活动是其任务中唯一的活动。如果它开始另一个活动,则不管其启动模式如何,该活动都将启动到不同的任务中 - 就好像FLAG_ACTIVITY_NEW_TASK的意图一样。在所有其他方面,“singleInstance”模式与“singleTask”相同。 如上所述,“singleTask”或“singleInstance”活动中不会有多个实例,因此该实例预计会处理所有新的意图。一个“singleInstance”活动始终位于堆栈顶部(因为它是该任务中的唯一活动),所以它始终处于处理意图的位置。然而,一个“singleTask”活动在堆栈中可能有或者没有其他活动。如果确实如此,它就无法处理这个意图,意图就会被抛弃。(即使意图被放弃,它的到来也会导致任务走到前台,在那里它仍然存在。)

用户回答回答于

以一种简单的方式来做吧。

singleTask:

系统创建一个新任务并在新任务的根目录下实例化活动。但是,如果活动的实例已经存在于单独的任务中,则系统通过调用其onNewIntent()方法来将意图路由到现有实例,而不是创建新实例。一次只能one instance存在活动。

注意:尽管活动在新任务中开始,但后退按钮仍然会将用户返回到上一个活动。

singleInstance-

与此相同"singleTask",只是系统不会将任何其他活动发送到持有该实例的任务中。该活动始终是其任务中唯一且唯一的成员; 任何由此人开始的活动都将在单独的任务中打开

扫码关注云+社区