Android 启动模式
1. standard
2. singleTop
3. singleTask
4. singleInstance
在开发中合理运用,会节省很多资源。首先总结一下各自的特性:
1. standard
standard启动模式是Activity的默认启动模式,我们也可以在 android:launchMode=”standard”中指定,standard启动模式的Activity会在每次startActivity()时,在task栈中创建一个实例,也就是onCreate()方法都会执行。
效果图:
点击standard:
可以看出当前类的内存地址发生了改变·,当点击返回时,返回两次会提出当前应用。
2. singleTop
singleTop为栈顶复用启动模式,即,启动模式为singleTop的Activity位于栈顶时,再启动此Activity,就会复用这个Activity。
效果图:
再点击一次:
3. singleTask
singleTask为栈内复用启动模式,即,只要在当前栈中有singleTask的Activity启动,就会复用此Activity,但是当再次启动这个Activity时,如果这个Activity没有位于栈顶,则会将位于它上面的Activity清出栈。
效果图:
首先创建standard模式Activity–>singleTask1:
再创建singleTask模式Activity–>singleTask:
再创建standard模式Activity–>standard2:
这是我们点击的顺序为standard1–>singleTask–>standard2,这时点击返回的话顺序为,从standard2–>singleTask–>standard1。如果再点击singleTask启动模式的Activity启动,就会将standard2清出栈,返回顺序会变为从singleTask–>standard1.
4. singleInstance
singleInstance是在singleTask的基础上,独自的建立一个栈,并且独占这个栈。所以在多个任务都要用到一个Activity时,可以采用这种方式。
首先创建standard启动模式的Activity–>standard1:
其次创建singleInstance启动模式的Activity–>singleInstance:
到此为止,已经开启了两个栈,一个装有standard启动模式的Activity,另一个装有singleInstance的Activity;
如果这时候点击返回,则会首先关闭装有singleInstance的栈,然后关闭standard的Activity.
再创建standard启动模式的Activity–>standard2:
这时候点击返回,就会发生以前没有见过的情况,返回顺序为:standard2–>standard1–>singleInstance。
原因很简单,standard2和standard1在同一个栈中,singleInstance的Activity在一个栈中,当在一个栈中点击返回时,会将这个栈中的Activity都出栈后,再返回另外一个栈中。
Android的启动模式简单来说就这些,不过要想熟练运用需要在项目中慢慢体会。
ok,就到这了~~~~