2013-12-20 09:42:21
转载自: http://blog.csdn.net/liuhe688/article/details/6754323#
讲解launchMode思路最清晰的一篇文章。
写点自己的东西:
1. 一个应用按back退出,再次打开,此时getTaskId()也就是Task ID的值会变,:-),以前没注意;
2. 关于SingleTask, 再次声明一点, 会将对应的Activity之上的所有Activity实例统统出栈,将之变为栈顶对象;
3. 关于singleInstance, 由于会开启一个新栈,因此:
从B应用中打开A中Activity(launchmode=singleInstance),按Home键退出, 打开A应用, 发现是同一个Activity,同一个Task ID。
先从A中打开Activity(launchmode=singleInstance),按Home键退出,打开B应用,然后从B中打开A里面的Activity(launchmode=singleInstance),发现仍然是同一个Activity,同一个Task ID。
ActivityA打开ActivityB,ActivityB使用SingleInstance,ActivityB打开ActivityC,发现ActivityA和ActivityC在同一个栈,ActivityB在另外一个栈;返回时,先从ActivityC到ActivityA,再按返回,才会到ActivityB。
测试代码下载,有兴趣的可以自己改改代码试试: