1. 启动模式
启动模式就是Activity启动时的策略,在AndroidMainfest.xml中的标签android:launchMode属性设置;
启动模式有四种,分别是 standard、singleTop、singleTask、singleInstance;
2. 任务栈
每个应用都有一个任务栈,用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序;
比如Activity1->Activity2->Activity3;
任务栈为:
3. Activity启动模式设置:
<activity android:name=".MainActivity" android:launchMode="standard" />
3. 启动模式
1) standard:每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈。
2) singleTop:如果在任务的栈顶正好存在该Activity的实例,就重用该实例,否则就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不再栈顶都会创建)
3)singleTask: 如果栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让实例回到栈顶,因此还在它上面的实例会被移除栈。如果栈中不存在该实例,就会创建新的实例放入栈中。
4)singleInstance:在一个新栈中创建该Activity实例,并让多个应用共享该栈中的Activity实例。一旦该模式的Activity的实例存在某个栈中,任何应用再激活该Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。