activity的四种启动模式详细分析
1、android中通过任务队列来管理activity
采用栈的结构就是后进先出
手机里面如果启动多个应用就会启动多个任务栈来管理对应的activity。
主要解决下面的问题:对应的四种启动模式:
1、界面1去启动界面2,在界面2中再去启动界面1,是新创建一个界面1的实例,还是使用后来栈中的已经存在的实例,这就和界面1的设置的模式有很大的关系。
标准的模式:每次去调用都会产生一个新的实例,比如当前activity,你在当前的activity中点击按钮再创建当前的activity,在任务栈就会存在当前的activity的两个实例对象。
2、栈顶复用模式:如果已经有一个实例位于acitivity的顶部时候,就不会产生新的实例对象。如果不位于顶部,就会产生一个新的实例对象,举个例子:如果现在栈内的情况是abcd,其中a位于栈顶,这个时候如果d的模式是顶部模式,这个时候如果再启动d,不会在创建新的d的实例对象,栈内的情况还是abcd,如果d的模式设置成第一种标准的模式,那么栈的情况就是abcdd
3 sigleTask对象模式:如果创建一个d activity,此时任务队列中的情况是adbc,此时因为栈中存在了d对象,这个时候不会创建d对象的实例对象,因为d设置了sigleTask属性,此时会将bc从栈中移除出去,导致所有的在d上面的acitivity都会被移除出去,栈中最后只有ad。
4 上面所述的三种模式的activity对象都属于同一个task栈中,最后这种模式有点特殊。我们来举一个例子
界面a去启动界面b,其中界面a在任务s1队列中,界面b设置成singleInstance模式,这个时候会启动一个新的任务队列s2,在s2中放置b的实例对象,在b界面中启动界面c,整个时候不会创建一个新的任务栈,会把c放到队列s1中,s1对应的情况是ac,s2对应的情况是b。启动的顺利是a启动b,b中去启动c
这个时候如果点击返回按键,因为c现在处在可视界面,首先销毁的是s1的队列,先销毁c,在销毁a,s1队列销毁完成成在销毁s2队列在销毁b,而不是先销毁c,在销毁b,在销毁c。
activity的四种启动模式详细分析的更多相关文章
- Activity的四种启动模式任务栈图解
转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 今天带来另一篇Activity的文章--Activity的四种启动模式.该篇文章,会以图文讲解的方式带你彻底掌握Activity的启动 ...
- 详解Activity的四种启动模式
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Ac ...
- Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式。
原文:Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式. Android Activity 的四种启动模 ...
- Activity的四种启动模式
Activity有四种启动模式: 1. standard,默认的启动模式,只要激活Activity,就会创建一个新的实例,并放入任务栈中,这样任务栈中可能同时有一个Activity的多个实例. 2. ...
- Activity的四种启动模式-图文并茂
1.对于使用standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例. 例如A启动A,A再接着启动A,A继续启动A,然后再分别出栈,如图所示 ...
- Activity的四种启动模式和onNewIntent()
转自:http://blog.csdn.net/linghu_java/article/details/17266603 Android中Activity启动模式详解 在Android中每个界面都 ...
- 安卓基础之Activity的四种启动模式
Activity的四种启动模式 Activity的启动模式在清单文件中配置: <activity ... activity:lauchMode:"..."; //有四种模 ...
- Android 关于Activity的四种启动模式的简单介绍
Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standar ...
- Android学习笔记四:activity的四种启动模式
Activity有四种启动模式:standard,singleTop,singleTask,singleInstance. 1.standard:标准启动模式 默认模式,这个模式下启动的Activit ...
随机推荐
- R语言入门二
一.R语言应知常用函数 1.getwd() 函数:获取工作目录(同eclipse设置workspace类似),直接在R软件中使用,如下图: 2.setwd(dir=”工作目录”) 函数:设置R软件RS ...
- CVE-2019-7238 poc
from requests.packages.urllib3.exceptions import InsecureRequestWarning import urllib3 import reques ...
- Rocket - diplomacy - LazyModule的实例化
https://mp.weixin.qq.com/s/9PsBt4_4qHx4i6C5XtuiUw 介绍LazyModule和Node构造方法的执行过程,即实例化过程. 1. NullIn ...
- 关于URL优化的一些经验
URL在搜索结果列表中时显示内容之一.设计网站结构时需要对目录及文件命名系统做事先规划.总的原则是首先从用户体验出发,URL应该清晰友好.方便记忆,然后才考虑URL对排名的影响.具体可以考虑以下几个方 ...
- flex布局以及常用属性。
(1)flex布局排列 会消除块状属性,所有与块状相关的属性将失效,比如块状元素会独占一行,如图2,设置flex后会在一行排列
- Java实现 LeetCode 825 适龄的朋友(暴力)
825. 适龄的朋友 人们会互相发送好友请求,现在给定一个包含有他们年龄的数组,ages[i] 表示第 i 个人的年龄. 当满足以下条件时,A 不能给 B(A.B不为同一人)发送好友请求: age[B ...
- Java实现 蓝桥杯VIP 算法训练 sign函数
试题 算法训练 sign函数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定实数x,输出sign(x)的值. sign(x)是符号函数,如果x>0,则返回1:如果x=0, ...
- Java实现 蓝桥杯VIP 算法训练 数列
问题描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,- (该序列实际上就是 ...
- Java实现寻找最小的k个数
1 问题描述 有n个整数,请找出其中最小的k个数,要求时间复杂度尽可能低. 2 解决方案 2.1 全部排序法 先对这n个整数进行快速排序,在依次输出前k个数. package com.liuzhen. ...
- requireJS模块化
1. JavaScript里面js代码的写法:目标是解决冲突和依赖 函数式编程,全局函数和变量--很容易覆盖 对象的写法--也会从外面改变 命名空间:利用名称不同缓冲js代码的冲突---名称太长,不方 ...