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

Android基础:Activity的启动模式

2018-02-28 16:21 459 查看
1、Activity启动提供了4种方式

Standard:标准模式

SingleTop:栈顶复用模式

SingleTask:栈内复用模式

SingleInstance:单例模式

2、关于Activity的管理方式:任务栈。任务栈采用的结构是:先进后出

3、关于启动模式的总结

(1)Standard

特点:

1)Activity的默认启动模式

2)每启动一次Activity,就会创建一个新的Activity示例 并且 置于栈顶

3)Activity A 以标准模式 启动Activity B,那么Activity B 就会进入到 A 的栈中 并且 处于栈顶

4)注意:因为ApplicationContext没有任务栈,故无法用标准模式启动任务栈。但是可以通过待请启动的Activity指定标记:FLAG_ACTIVITY_NEW_TASK,这时启动以后就创建一个新的任务栈。

(2)SingleTop

特点:

1)、若新建的Activity位于任务栈的栈顶,那么此Activity的实例就不会重建,而是重新应用栈顶的实例

2)调用实例的时候是不会调用onCreate()和onStart(),而是会调用onNewIntent()

(3)SingleTask

特点:

1)查看Activity想要的任务栈是否存在,若不存在则重建1个任务栈、创建该Activity实例 并且 置于栈中

2)若存在,则查看该Activity是否存在栈中,若存在,则将该Activity栈上方的所有Activity出栈。回调onNewIntent()

3)应用场景:首页

(4)SingleInstance

特点:

1)、直接创建1个新的任务栈 并且 将该Activity 放入新栈中

2)应用场景:比如多个界面都访问同一个Activity,那么这个Activity就可以设置成SingleInstance

4、启动模式的设置

方式1:在AndroidMainifest

<activityandroid:launchMode="启动模式"//属性//standard:标准模式//singleTop:栈顶复用模式//singleTask:栈内复用模式//singleInstance:单例模式//如不设置,Activity的启动模式默认为**标准模式(standard)**</activity>

<activityandroid:launchMode="启动模式"//属性//standard:标准模式//singleTop:栈顶复用模式//singleTask:栈内复用模式//singleInstance:单例模式//如不设置,Activity的启动模式默认为**标准模式(standard)**</activity>

<activityandroid:launchMode="启动模式"//属性//standard:标准模式//singleTop:栈顶复用模式//singleTask:栈内复用模式//singleInstance:单例模式//如不设置,Activity的启动模式默认为**标准模式(standard)**</activity>

<activity android:launchMode="启动模式"
//启动模式
//standard:标准模式
//singleTop:栈顶复用模式
//singleTask:栈内复用模式
//singleInstance:单例模式
</activity>


方式2:在代码中设置
Intent inten = new Intent (Activity_A.this,Activity_B.class);
intent,addFlags(Intent,FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Flag说明:

FLAG_ACTIVITY_SINGLE_TOP:SingleTop栈顶复用模式

FLAG_ACTIVITY_NEW_TASK:SingleTask栈内复用模式

FLAG_ACTIVITY_CLEAR_TOP:SingleTask默认有此标记效果,意义:清除位于其上层的所有Activity

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:标记此Activity不会出现在历史Activity的列表中,无法通过历史列表找到该Activity

从上面我们可以发现Intent 没有 设置 SingleInstance,所以两种方式还是有区别的:

区别:AndroidMainifest无法设定 FLAG_ACTIVITY_CLEAR_TOP,Intent无法设置SingleInstance
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: