http://blog.sina.com.cn/s/blog_6db7864e01012q3x.html
launchMode 四个模式:standard
singleTop
singleTask
singleInstance
- standard
“目标activity”将以新的实例启动,无论它在当前Task是否已经拥有实例。如果有“FLAG_ACTIVITY_NEW_TASK”,则在新的Task中创建 “目标activity”。总之就是
无论如何创建一个 “目标activity”的新实例。 - singleTop
和standard差不多,不过多了一个例外:如果 “目标activity”在栈顶,则不创建
实例,而是调用已经存在的activity的相应方法。 - singleTask
查找当前“Task栈”中是否包含“目标activity”的实例,如果没有,新建一个Task
并把 “目标activity”作为其Root Activity.如果已经存在,将其激活。 - singleInstance
和 singleTask差不多,只不过一个Task只允许一个Activity。用的比较少。
有啥用处呢?
- 如果 “目标activity”开销很小,那么就 standard,反正多个实例也无所谓。而 singleTop
可以避免一些尴尬的事情。比如按了return键,发现还是同样的窗口。 - 如果
“目标activity”开销比较大,考虑用 singleTask。无论如何,只有一个 “目标activity”
的实例。另外,如果 activity调用了singleton的东西,那么也得这样处理,不然会被反复调用。 - singleInstance用的不多。