为了账号安全,请及时绑定邮箱和手机立即绑定

Android singleTask还是singleInstance启动模式?

Android singleTask还是singleInstance启动模式?

犯罪嫌疑人X 2019-08-26 10:45:14
Android singleTask还是singleInstance启动模式?我有一个应用程序,其中有一个列表作为其主要活动,然后您可以单击项目打开该项目的详细视图。我还有一个类似于主要活动的搜索活动,并按预期工作。但是,我希望此搜索活动只在堆栈上有一次实例,以便用户可以多次搜索并单击返回将它们返回到他们开始搜索之前所处的前一个视图(而不是返回到前一个搜索结果)singleTask和singelInstance启动模式似乎都做我想要的,所以我不确定我应该为此目的使用哪一个以及为什么?
查看完整描述

3 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

从Android开发指南的Application Fundamentals页面:

默认情况下,应用程序中的所有活动都具有彼此的亲和力 - 也就是说,它们都优先属于同一任务。

“singleInstance”活动是其任务中唯一的活动。如果它启动另一个活动,则无论其启动模式如何,该活动都将启动到另一个任务 - 就像FLAG_ACTIVITY_NEW_TASK在意图中一样。在所有其他方面,“singleInstance”模式与“singleTask”相同。

如上所述,“singleTask”或“singleInstance”活动永远不会超过一个实例,因此该实例应该处理所有新意图。“singleInstance”活动始终位于堆栈的顶部(因为它是任务中唯一的活动),因此它始终处于处理意图的位置。但是,“singleTask”活动在堆栈中可能有也可能没有其他活动。如果是,则无法处理意图,并且意图被删除。(即使意图被删除,它的到来也会导致任务进入前台,它将保留在前台。)

由于具有任一启动模式的活动永远不会有多个实例,因此后退按钮将始终将您带到您的案例中的活动的现有实例。

一个重要的区别是“singleTask”不需要为选择某些内容时启动的新活动创建新任务。也不必每次都在后退按钮上删除新任务。

由于您的Activity堆栈完全属于一个用户“任务”,并且听起来您没有复杂的Intent结构,其中singleInstance可能有利于始终处理它们,我建议使用singleTask启动模式。

这是一篇很好的博客文章,了解更多信息,以及图片来源:Android活动和任务系列 - Android UI组件模型简介


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 843 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信