Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();
来源:互联网 发布:淘宝官方活动 编辑:程序博客网 时间:2024/06/09 20:24
一.Android Activity 四种启动模式 lunchMode 在Manifest 配置文件中的属性如下:
(1) android:launchMode="standard"
(2)android:launchMode="singleTop"
(3)android:launchMode="singleTask"
(4)android:launchMode="singleInstance"
二.说明:
Android 中Activity 生命周期 跟Task 的关系,就是进栈出栈。
很多时候我们在Manifest的Activiy 配置信息中没有看到lunchMode 属性,其实没有配置这个属性就是系统默认属性 android:launchMode="standard"。同一个工程AppA在这种模式下有AfirstActivity 启动 AsecondActivity,启动代码是:
Intent intent =
new
Intent();
intent.setClass(
this
, AsecondActivity.
class
);
startActivity(intent);
两个TaskId 都是98.说明两个 activity 是在同一个 任务栈 Task 中。
接下来我们让这两个Activity 不在同一个Task 中。有两种方法实现:
(1)不修改启动代码,只修改 Mnaifest 中 给AsecondActivity 配置多添加 两行代码如下:
android:launchMode=
"singleTask"
android:taskAffinity=
"com.xjp"
(2)修改启动代码:
Intent intent =
new
Intent();
// ComponentName name = new
// ComponentName("com.example.appa","com.example.appa.AsecondActivity");
// intent.setComponent(name);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(
this
, AsecondActivity.
class
);
startActivity(intent);
多添加了一行
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
android:taskAffinity=
"com.xjp"
看Log打印:
AfirstActivity taskId = 8 而 AsecondActivity TaskId = 9.所以两个 activity 不是在同一个任务栈 Task 中。虽然两个activity 是在同一个工程下面。
分析:
由此看出,代码里设置
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
android:launchMode=
"singleTask"
android:taskAffinity=
"com.xjp"
android:taskAffinity=
"com.xjp"
android:launchMode=
"singleTask"
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
总结:当设置了
android:launchMode=
"singleTask"
taskAffinity
三.当 配置文件中设置了 android:launchMode="singleInstance"。不管 activity 怎么启动,都是在一个新的Task 任务中启动activity。
看Log 打印:
两个TaskId 不一样。并且 被启动的activity 唯一存在 新的任务队列中,也就是这个task 队列中只能有 一个activity。
- Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags()
- Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();
- Android:lunchmode(Activity的四种启动模式介绍)
- Activity启动模式intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- Activity的四种lunchMode
- Android中intent启动Activity中intent.setFlags()的作用
- Android中intent启动Activity中intent.setFlags()的作用
- Android中intent启动Activity中intent.setFlags()的作用
- Android中intent启动Activity中intent.setFlags()的作用
- Android中intent启动Activity中intent.setFlags()的作用
- 区分Activity的四种加载模式----以及Intent的setFlags
- 区分Activity的四种加载模式----以及Intent的setFlags
- 区分Activity的四种加载模式----以及Intent的setFlags
- 区分Activity的四种加载模式----以及Intent的setFlags
- 区分Activity的四种加载模式----以及Intent的setFlags
- 区分Activity的四种加载模式----以及Intent的setFlags
- 区分Activity的四种加载模式----以及Intent的setFlags
- 区分Activity的四种加载模式----以及Intent的setFlags
- 51nod 1364 线段树
- Java模式设计原则
- 使用PictureBox显示分割图像
- Xcode找不到对应的dylib库
- 变量声明提前和函数声明提前
- Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();
- 004_Http之response响应头-03禁用浏览器缓存
- 机器学习 知识图谱
- C# 中的委托和事件
- Android之Animations的使用
- JavaScript 头像上传插件源码
- Android中的android:layout_width和android:width
- IT行业专业术语
- SSM框架——实现分页和搜索分页