android:launchMode="singleTask"的问题
在2个singleTask的Activity之间切换
为什么后start的Activity都会创建新实例呢?
就是说:
A和B 相互跳转,
A.startActivity(intent)--->B.startActivity(intent)----->A.......
B每次都是新实例化的,
singleTask不是在 Task中找已实例化过的Activity么?
我理解错了?
求解!
[解决办法]
如果A 和B都是singleTask 的activity 是会出现这种情况的。
因为singleTask 的activity 都必须在task的底部,假设taskA中有一个activityA(1) 当A(1)->B 会新建一个taskB 把ACTIVITY B 放进去,当 B->A(2)时, 由于当前的TASKB中只有一个activity B ,而最开始的那个A(1)在taskA中故无法重用。所以,会再起一个TASKC 把 ACTIVITY A(2)放进去。
不知道解释清楚没。
[解决办法]
singleTask 表示这个activity 任何时候都在这个栈的底部。 不是单例的意思。
两个activity 都是singleTask 的, 互相startActivity,就只有重新建立新的栈来保证它们都在各自栈的最底部