【问题标题】:Difference between singleTask and singleInstancesingleTask 和 singleInstance 的区别
【发布时间】:2014-04-12 17:07:17
【问题描述】:

我在 StackOverflow 上没有找到任何可以回答我问题的帖子。我已经看过这个Android singletop singleinstance and singletask,但这个问题与他的项目场景有关。

singleTask 和 singleInstance 有什么区别??我已阅读文档但无法理解..

我也读过这个帖子Android singleTask or singleInstance launch mode?,但我听不懂。对不起

【问题讨论】:

标签: android android-activity


【解决方案1】:

docs 有什么不清楚的地方?

“singleTask”和“singleInstance”模式也各不相同 只有一个方面的其他:“singleTask”活动允许其他 活动成为其任务的一部分。它始终是它的根源 任务,但其他活动(必须是“标准”和“singleTop” 活动)可以启动到该任务中。一个“单一实例” 另一方面,活动不允许其他活动成为其中的一部分 它的任务。这是任务中的唯一活动。如果它开始另一个 活动,该活动被分配给不同的任务 - 好像 FLAG_ACTIVITY_NEW_TASK 在意图中。

【讨论】:

  • 所以在singleTask的情况下,它允许在同一个堆栈中的其他活动,而singleInstance它不允许在同一个堆栈中的其他活动??
  • 你有什么理由知道我在评论中提出的问题的答案吗?
  • 有什么理由让singleInstance 保留自己的Stack 吗??
  • 因为每个活动都必须属于一个活动堆栈(称为任务)。
  • 所以每个Activity关联不同的Stack??
【解决方案2】:

singleTask :- 将始终创建一个新任务,并将一个新实例作为根推送到该任务。但是,如果任何任务中存在任何活动实例,系统会通过 onNewIntent() 方法调用将意图路由到该活动实例。在这种模式下,活动实例可以被推送到同一个任务。此模式对于充当入口点的活动很有用。

singleInstance:- 与 singleTask 相同,只是没有活动的实例可以被推送到 singleInstance 的同一任务中。因此,具有启动模式的活动始终处于单个活动实例任务中。这是一种非常专业的模式,只能在完全作为一个 Activity 实现的应用程序中使用。

【讨论】:

  • 清晰、简洁的解释。谢谢!
【解决方案3】:

SingleInstance 就像一个单例,它的堆栈也像 final 类,不能扩展。 它在堆栈中始终是单一的。并且始终存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-31
    • 2011-03-14
    • 2021-02-18
    • 2018-10-21
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多