Android 启动模式 launchMode

来源:互联网 发布:内外网络切换器软件 编辑:程序博客网 时间:2024/06/03 19:28

Android 启动模式

1. standard

2. singleTop

3. singleTask

4. singleInstance

在开发中合理运用,会节省很多资源。首先总结一下各自的特性:

1. standard

standard启动模式是Activity的默认启动模式,我们也可以在 android:launchMode=”standard”中指定,standard启动模式的Activity会在每次startActivity()时,在task栈中创建一个实例,也就是onCreate()方法都会执行。

效果图:

laounchMode1

点击standard:

laounchMode2

可以看出当前类的内存地址发生了改变·,当点击返回时,返回两次会提出当前应用。

2. singleTop

singleTop为栈顶复用启动模式,即,启动模式为singleTop的Activity位于栈顶时,再启动此Activity,就会复用这个Activity。

效果图:

singleTop

再点击一次:

singleTop2

3. singleTask

singleTask为栈内复用启动模式,即,只要在当前栈中有singleTask的Activity启动,就会复用此Activity,但是当再次启动这个Activity时,如果这个Activity没有位于栈顶,则会将位于它上面的Activity清出栈。

效果图:

首先创建standard模式Activity–>singleTask1:

singleTask1

再创建singleTask模式Activity–>singleTask:

singleTask2

再创建standard模式Activity–>standard2:

singleTask3

这是我们点击的顺序为standard1–>singleTask–>standard2,这时点击返回的话顺序为,从standard2–>singleTask–>standard1。如果再点击singleTask启动模式的Activity启动,就会将standard2清出栈,返回顺序会变为从singleTask–>standard1.

4. singleInstance

singleInstance是在singleTask的基础上,独自的建立一个栈,并且独占这个栈。所以在多个任务都要用到一个Activity时,可以采用这种方式。
首先创建standard启动模式的Activity–>standard1:

singleInstance1

其次创建singleInstance启动模式的Activity–>singleInstance:

singleInstance2

到此为止,已经开启了两个栈,一个装有standard启动模式的Activity,另一个装有singleInstance的Activity;
如果这时候点击返回,则会首先关闭装有singleInstance的栈,然后关闭standard的Activity.

再创建standard启动模式的Activity–>standard2:

singleInstance31

这时候点击返回,就会发生以前没有见过的情况,返回顺序为:standard2–>standard1–>singleInstance。

原因很简单,standard2和standard1在同一个栈中,singleInstance的Activity在一个栈中,当在一个栈中点击返回时,会将这个栈中的Activity都出栈后,再返回另外一个栈中。

Android的启动模式简单来说就这些,不过要想熟练运用需要在项目中慢慢体会。

ok,就到这了~~~~

1 0
原创粉丝点击