
前言
-
Android基础中,Activity的启动模式非常重要 - 本文将全面介绍
Activity的启动模式
目录

目录
1. 定义
即Activity启动的方式
2. 启动模式的类别
Android启动提供了四种启动方式:
- 标准模式(
Standard) - 栈顶复用模式(
SingleTop) - 栈内复用模式(
SingleTask) - 单例模式(
SingleInstance)
3. 知识储备
-
Activity的管理方式 = 任务栈 - 任务栈 采用的结构 = “后进先出” 的栈结构
- 每按一次Back键,就有一个
Activity出栈

示意图
4. 具体介绍
- 如下图

-
通俗讲解
图解
5. 四种启动模式的区别

示意图
6. 启动模式的设置
启动模式有2种设置方式:在AndroidMainifest设置、通过Intent设置标志位
6.1 在AndroidMainifest设置
在AndroidMainifest的Activity配置进行设置
<activity
android:launchMode="启动模式"
//属性
//standard:标准模式
//singleTop:栈顶复用模式
//singleTask:栈内复用模式
//singleInstance:单例模式
//如不设置,Activity的启动模式默认为**标准模式(standard)**
</activity>
6.2 通过Intent设置标志位
Intent inten = new Intent (ActivityA.this,ActivityB.class);
intent,addFlags(Intent,FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
标记位属性
| 标记位属性 | 含义 |
|---|---|
| FLAG_ACTIVITY_SINGLE_TOP | 指定启动模式为栈顶复用模式(SingleTop) |
| FLAG_ACTIVITY_NEW_TASK | 指定启动模式为栈内复用模式(SingleTask) |
| FLAG_ACTIVITY_CLEAR_TOP | 所有位于其上层的Activity都要移除,SingleTask模式默认具有此标记效果 |
| FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | 具有该标记的Activity不会出现在历史Activity的列表中,即无法通过历史列表回到该Activity上 |
6.3 二者设置的区别
- 优先级不同
Intent设置方式的优先级 >Manifest设置方式,即 以前者为准 - 限定范围不同
Manifest设置方式无法设定FLAG_ACTIVITY_CLEAR_TOP;Intent设置方式 无法设置单例模式(SingleInstance)
7. 总结
- 本文全面介绍了
Android的4种Activity启动模式 - Carson带你学四大组件文章系列:
Carson带你学Android:页面活动-Activity
Carson带你学Android:广播-BroadcastReceiver
Carson带你学Android:服务-Service
Carson带你学Android:内存承载器-ContentProvider
欢迎关注Carson_Ho的简书
不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度。

