FLAG_ACTIVITY_NEW_TASK和SingleInstance混用时候Activity栈情况

1. Main, Test,Test2 都是standard

运行过程: Main  -> Test - FLAG_ACTIVITY_NEW_TASK(启动方式) ->Test2 -FLAG_ACTIVITY_NEW_TASK ->Test

通过adb shell dumpsys activity activities观察, 其中只有一个栈

结论: 如谷歌所说, FLAG_ACTIVITY_NEW_TASK的表现和singleTask一致, 多次FLAG_ACTIVITY_NEW_TASK, 如果之前已经有栈了, 测试中是app默认的栈, 实际上只是在一个栈中操作

2.Main, Test,是standard, Test2 是singleInstance

Main  -> Test ->Test2 ->Test

通过adb shell dumpsys activity activities观察, 其中有两个栈, Test2 自己一个栈, 其余的Test和Main一个栈

结论: 不指定启动模式, 对于Test2在自己栈启动, 其他Activity在app默认栈中启动

3.Main, Test,是standard, Test2 是singleInstance

Main  -> Test - FLAG_ACTIVITY_NEW_TASK(启动方式) ->Test2 -FLAG_ACTIVITY_NEW_TASK ->Test

通过adb shell dumpsys activity activities观察, 其中有两个栈, Test2 自己一个栈, 其余的Test和Main一个栈

结论: 虽然使用FLAG_ACTIVITY_NEW_TASK启动,根据测试1, 所以对于Test2在自己栈启动, 其他Activity还是在app默认栈中启动, 因为从Test2启动Test的时候 Test已经有可以存放的栈, 不用创建新的栈

猜你喜欢

转载自my.oschina.net/sfshine/blog/1635077
今日推荐