当前位置: 移动技术网 > 移动技术>移动开发>Android > Activity的启动模式

Activity的启动模式

2019年05月16日  | 移动技术网移动技术  | 我要评论

 

android系统采用任务栈的方式来管理activity实例。

 

栈是后进先出的数据结构。通常一个应用程序对应一个任务栈,默认情况下,每启动一个activity都会入栈,处于栈顶位置。用户操作的永远都是栈顶的activity。

 

activity可以层叠摆放,每启动一个新的activity都会覆盖在原activity之上(入栈),单击返回按钮,最上面的activity会被销毁,下面的activity重新显示。

 

 

 

activity有4种启动模式:

1、standard模式

上面介绍的模式就是standard模式。standard模式是activity默认的启动模式。每启动一个activity就在栈顶创建一个新的实例。

闹钟通常采用此种模式。

 

2、singletop模式

如果有时候satndard模式并不合理,比如当前activity已处于栈顶,再次启动此activity会重新创建实例,不会直接复用。

singletop顾名思义,栈顶单例。

将某个activity的启动模式设置为singletop,启动此activity时,会先检查栈顶是否是此activity的实例,如果是,则直接复用,如果不是,才创建实例。

浏览器的书签通常采用此种模式。

 

3、singletask模式

singletop模式有一定的缺陷,当栈中有此activity的实例,但未处于栈顶时,仍会创建实例,栈中可能会存在此activity的多个实例。

singletask,顾名思义,任务栈中只有一个实例。

启动某个activity时,会先检查任务栈中是否有该activity的实例,有就直接复用(把前面所有的activity出栈),没有才创建并入栈。

浏览器的主界面通常采用此模式。

 

4、singleinstance模式

会启动一个新的任务栈来管理当前程序中singleinstance模式启动的activity,在android系统中,该activity只有一个实例。

这种模式主要是为了,在不同程序间共享同一个activity实例。

启动activity时,若android系统中不存在该activity的实例,则创建并入栈;若已存在,不管此实例位于哪个程序的哪个任务栈中,系统都会把该任务栈转移到前台,显示该实例。

来电界面通常使用此模式。

 

 

 

可在androidmanifest.xml文件对应的 <activity />元素中用 launchmode属性 指定启动模式:

1  <activity
2             android:name=".activity2"
3             android:label="@string/title_activity_2"
4             android:theme="@style/apptheme.noactionbar"
5             android:launchmode="singletask">   <!-- 指定此activity的启动模式-->
6 </activity>

缺省时默认为standard模式。

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网