V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
photonvx
V2EX  ›  Android

有大神熟悉 Android Activity 的启动模式吗,想请教个问题

  •  
  •   photonvx · 2018-07-05 16:47:39 +08:00 · 9064 次点击
    这是一个创建于 2352 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天重读文档,实验的时候发现 Activity 启动模式 FLAG_ACTIVITY_NEW_TASK 和 singleTask 有不同的行为,而官方文档说这两个行为一致,很奇怪

    具体问题是:

    假设有三个 Activity A,B,C

    1、使用 Manifest 定义方式定义 B 为 singleTask,其它默认

    A 打开 B,B 打开 C,C 再打开 B,此时 stack 中只有 AB,B 在 top,这是正常现象

    2、使用代码添加 FLAG_ACTIVITY_NEW_TASK 标志,Manifest 都默认

    同样 A 打开 B,B 打开 C,C 再打开 B (添加 flag ),此时 stack 里为 ABCB,B 在 top,仿佛 FLAG_ACTIVITY_NEW_TASK 标志没有起任何作用,跟 standard 一样

    希望有大神可以帮忙解释一下,谢谢

    6 条回复    2018-07-07 19:46:57 +08:00
    susunus
        1
    susunus  
       2018-07-05 17:49:06 +08:00 via Android
    不是大神哈,你说的这个情况,网上好多这块的说明哈,
    orangex
        2
    orangex  
       2018-07-05 18:27:20 +08:00
    orangex
        3
    orangex  
       2018-07-05 18:57:05 +08:00
    可以确定的是,FLAG_ACTIVITY_NEW_TASK 和 singletask 并不完全一样。可以看看 ActivityStarter.java,启动的逻辑很复杂而且版本间有区别。
    johnidy
        4
    johnidy  
       2018-07-06 00:20:42 +08:00 via Android
    new task 和 single instance 的情况是一样的
    wsxyeah
        5
    wsxyeah  
       2018-07-06 07:36:43 +08:00 via iPhone
    你需要的是 clear top
    scuthua
        6
    scuthua  
       2018-07-07 19:46:57 +08:00
    你好,有个疑问。为什么第二种情况里 C 打开 B 添加了 flag,而 A 打开 B 不添加 flag 呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   908 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:50 · PVG 03:50 · LAX 11:50 · JFK 14:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.