【问题标题】:How can an activity with 'singleTask' launch mode be not root activity in a task?具有“singleTask”启动模式的活动如何不是任务中的根活动?
【发布时间】:2015-10-14 00:45:12
【问题描述】:

这是来自 android 文档的图片:

Activity Y 有'singleTask' 启动模式,但它不是任务中的根Activity,即Activity X。它是怎么发生的?

更新:

来自documentation

“单一任务”

系统创建一个新任务并在新任务的根目录下实例化活动。但是,如果活动的实例已经存在于单独的任务中,系统会通过调用其 onNewIntent() 方法将意图路由到现有实例,而不是创建新实例。一次只能存在一个活动实例。 注意:虽然 Activity 在新任务中开始,但“返回”按钮仍将用户返回到上一个 Activity。

【问题讨论】:

    标签: android android-activity launchmode


    【解决方案1】:

    Single task only 意味着这个activity只能创建一次 cf到这个网站:http://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

    Activity 是否是 root 无关紧要。

    单个任务:

    这种模式与standard和singleTop有很大不同。一个活动 使用 singleTask 时,launchMode 只允许在 系统(又名单例)。如果存在 Activity 实例 系统,整个Task持有的实例将被移到顶部 而 Intent 将通过 onNewIntent() 方法传递。 否则,将创建新的 Activity 并将其放置在适当的位置 任务。

    【讨论】:

    • 嗯,它与官方文档不符...我刚刚发布了对该问题的更新。
    • 虽然第二次看起来一样,但启动 Activity 的唯一方法是在根目录中创建一个新任务。
    【解决方案2】:

    我认为答案是这个活动是带着FLAG_ACTIVITY_SINGLE_TOP标志的意图启动的,因为意图比xml标签具有更高的优先级。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多