Activity 的加载模式
1) 概念:
加载模式决定以哪种方式启动一个跳转到原来某个Activity实例;

2) 起因:
在Android 开发中,activity 之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来某个activity实例,而不是生成大量的重复的activity;

3) 加载模式的种类:
在android 中,activity 有四种加载模式:standard ,singleTop,singleTask,singleInstance;

4) 配置:
直接修改AndroidMainfest.xml 文件,例如:
<activity android:name=”.NewActivity” android:launchMode=”singleTask”>
</activity>

5) 四种加载模式的介绍:

a) Standard : 系统默认模式,一次跳转即会生成一个新的实例;
b) SingleTop : 和 standard 类似,唯一的区别就是当跳转的对象是位于栈顶的activity时,程序将不会生成一个新的activity实例,而是直接跳到现在存于栈顶的那个activity实例;
c) SingleTask: singleTask 模式和后面的singleInstance 模式都只是创建一个实例;该模式下,无论调转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例(前提是该栈中已经 存在了这个实例);

提示:一般不要将除开始页面的其他页面设置为singleTask 模式;

d) SingleInstance: activity独占一个task(可以理解为进程),独占一个task 的activity 可以相当于是一个应用,这个应用与其他的activity是独立的,他有自己的上下文activity;

例如:现有三个activity,a1,a2,a3, a2设置为singleInstance 模式,那么调转关系如下:a1-a2-a3, 在 a3中按返回,由于a2 位于一个独立的task中,它不数据a3 的上下文activity ,所以此时将直接返回得到 a1 ,a1 再返回程序并没有结束,而是得到 a2 , 再返回就结束了程序;

e) 四种加载模式的主要区别:

 所属Task 的区别
一般情况下,standard 和 singleTop 两种模式的的资源在同一个Task里面,除非Intent包含了参数 FLAG_ACTIVITY_NEW_TASK ,则目标activity启动会到新的Task里面

是否允许多个实例的区别:
Starndrd 和 singleTop 可以允许有多个实例,并可以位于不同的task中;singleTop要求 activity Stack 栈顶已经要目标acvitivy实例,有就不创建,没有就创建
SingleTask 和 singleInstance 只产生一个实例,并且是task的根元素

 是否允许其他Activity存在于本Task内的区别:
SingleInstance 独占一个Task ,其他Activity 均不能村在于此Task中,如果它启动一个新的Activity,不管新的Activity的launch mode 如何,新的Activity都将运行于其他Task里;
另外三种模式则可以和其他Activity共存;

每次是否生成新实例:
Standard : 每次都生成一个新的Activity实例;
singleTop :的Activity如果在Task 的Activity Stack 顶部则不生成新的实例,直接使用,否则生成一个新的实例;
singleInstance :是其所在的Task的Activity 的Activity Stack 里的唯一的Activity实例,每次都会被重用;
singleTask :如果在Task 的Activity Stack 的顶部,则接收intent,否则会被丢弃,但仍然会返回前台;

更多相关文章

  1. No.11 使用firewall配置的防火墙策略的生效模式
  2. Android(安卓)Socket实例(2)
  3. Android(安卓)9.0 (P版本) 原生的电池-Google省电模式
  4. Android(安卓)activity launch mode
  5. Android创世纪 - 第一天
  6. Android实现内存中数据保存到sdcard的方法
  7. Android(安卓)HandlerThread详解
  8. OpenCV4Android(安卓)不需要安装OpenCVManager,就可以运行的方法
  9. 【Dialer】自定义暗码进入测试模式

随机推荐

  1. “ant debug install” 出错: sdk.dir is
  2. 分析图库
  3. android 运用AsyncTask 获取图片并显示
  4. android端口被占用
  5. Android 字符串转换大小写
  6. android adt错误
  7. Android:ListView数据异步加载、Handler、
  8. 【Android应用开发】Android(安卓)蓝牙低
  9. Android三种方法实现事件监听
  10. android如何从系统或相机中获取照片