您的位置:首页 > 移动开发 > Android开发

Android_06_Activity的四种启动模式

2015-10-21 09:13 302 查看
Activity的四种启动模式

>每个应用会有一个Activity任务栈,存放已启动的Activity
>Activity的启动模式,是用来修改任务栈的排列情况

在清单文件中,可对Activity的启动模式进行设置,如:

<activity
android:launchMode="singleInstance"
android:name="com.itheima.lifecycle.SecondActivity"
></activity>


注:其中launchMode属性就是用来修改其启动模式的

四种启动模式的特点如下:

1> standard 标准启动模式

标准启动模式遵循栈的特点,先进后出,当一个activity已经处于栈顶,若再次点击启动这个activity,

这个activity依旧又会新启动一个activity,也就是说,此时栈顶就有两个这样的activity了;

2> singleTop 单一顶部模式 
如果任务栈的栈顶存在这个要开启的activity,不会重新的创建activity,而是复用已经存在的activity。

保证栈顶如果存在,不会重复创建;如果activity不在栈顶,尽管先前已经创建了,其还是会重复创建

应用场景:浏览器的书签
3>  singeTask 单一任务栈,在当前任务栈里面只能有一个实例存在
当开启activity的时候,就去检查在任务栈里面是否有实例已经存在,如果有实例存在就复用这个已经存在的activity,

并且把这个activity上面的所有的别的activity都清空,复用这个已经存在的activity。保证整个任务栈里面只有一个实例存在;

如果没有这个activity,则会新创建一个这样的activity;

 应用场景:浏览器的activity
 如果一个activity的创建需要占用大量的系统资源(cpu,内存)一般配置这个activity为singletask的启动模式。

注:前面三种模式的范围是在每个应用中,只会创建一个任务栈,

第四种模式singleInstance则是在整个操作系统中只会存在一个activity实例

4>  singleInstance启动模式非常特殊, activity会运行在自己的任务栈里面,并且这个任务栈里面只有一个实例存在

若你想创建多个activity,它并不会重复创建,只是从后台移动到了前台,如果你点击返回键,销毁了这个activity,那么

其就不会存在了!含有activity的这个新任务栈也不会存在了!

如果你要保证一个activity在整个手机操作系统里面只有一个实例存在,使用singleInstance
应用场景: 电话拨打界面

注:关于这四种启动模式,详情可参考郭霖的《第一行代码Android》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: