Activity的启动模式
一、通过AndroidManifest.xml中 Activity的属性 android:launchMode来控制
该属性分为四种:standard(默认)、singleTop、singleTask、singleInstance
1. standard:当对应的Activity被启动时,直接生成一个新的Activity实例压入Task栈中。
2. singleTop:Task栈的顶部只有唯一的一个相同类型的Activity实例。如:Task栈中的ActivityA、B、C、D(D在最顶端),通过startActivity
启动D,栈中依然为 A、B、C、D那么就不会新生成D的实例了。
3. singleTask:在该Task栈中只有唯一的一个Activity实例,且当启动带该Activity的时候,位于它之上的Activity通通出栈。如: A、B、C、D,通过
startActivity启动B,栈中就为A、B,C和D被挤出Task栈。
4. singleInstance:应用程序中只有唯一的一个Activity实例(用于多Task栈的应用中)。
二、通过Intent的addFlags(FLAG)来控制,FLAG有很多种,以下列举常用的
1. Intent.FLAG_ACTIVITY_SINGLE_TOP:类似于singleTop。
2. FLAG_ACTIVITY_CLEAR_TOP:类似于singleTask。
3. FLAG_ACTIVITY_NO_HISTORY:当Intent中添加这个Flag的时候被启动的Activity不会被真的压入Task栈中,如: A、B、C,通过C启动D,
D再启动E,则Task栈中就是 A、 B、C、E,E按back就会回到C。