安卓 Activity(2) 四大启动方式
16lz
2021-01-26
极客学院安卓视频
理论部分 : (单词部分)
standard
singleTop
singleTask
singleInstance
代码部分: (配置XML文件)
<activity android:name="com.example.jk_android1.MainActivity" android:label="@string/app_name" android:launchMode="standard" >`
可以看出来,这行代码就是设置启动方式的一个属性
android:launchMode="standard"
我们继续看下文正题
了解四大启动模式之前首先要明白两个内容
1.Activity栈:
2.Activity实例
理解部分:
正常情况下 : 一个APP只有一个栈,但是有多个实例, (栈是保持先进后出原则)
通俗的理解:一个软件,有一个叫栈的容器,装很多页面
先进后出的实际体验就是: 点击退出,逐个退,直接退,等等
这就是启动方式要管理的启动方式具体作用了
代码部分:
text1.setText("Activity栈中任务ID:"+ getTaskId()+"\n" + "Activity的实例地址Id:" + toString());
这样就比较直观了
standard (系统默认的)
特点: 只有一个栈,每一次跳转页面 ,都新建一个新的实例
singleTop
特点:只有一个栈,每一次跳转页面,看栈顶是否一致(如果一致不新建)
singleTask
特点: 只有一个栈, 每一次跳转页面,如果栈中有相同的页面,中间的实例直接摧毁
singleInstance
特点: 每次跳转都会创建一个新的栈,一个栈,一个实例,
重点:
“taskaffinity”页面的归属,如果 代码包名为进,这个就是出的意思
<activity android:name="UserFeedTwo" android:launchMode="singleTask" android:taskAffinity="com.testaffinity" > </activity></span>
参考官方回答:
参考疯狂讲义
这里写链接内容
Activity启动模式设置:
<activity android:name=".MainActivity" android:launchMode="standard" />
Activity的四种启动模式:
1. standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。2. singleTop 如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。3. singleTask 如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。4. singleInstance 在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。
更多相关文章
- android四大组件启动流程-BroadcastReceiver启动流程(基于androi
- Android(安卓)设置开放隐性启动Intent
- Android学习整理之Activity篇
- Android:布局实例之模仿微信Tab
- android启动之子系统切换
- Android(安卓)基础常见记录
- RN不用启动Android(安卓)Studio用命令行启动虚拟机
- 在Android中创建启动界面
- android JNI NDK