zoukankan
html css js c++ java
Android的启动模式
一、Android启动模式详解
1、standard模式:
标准启动模式,也是activity的默认启动模式。在这种模式下启动的activity可以被多次实例
化,即在同一个任务中可以存在多个activity的实例,每个实例都会处理一个Intent对象。如
果Activity A的启动模式为standard,并且A已经启动,在A中再次启动Activity A,即调
用startActivity(new Intent(this,A.class)),会在A的上面再次启动一个A的实
例,即当前的桟中的状态为A-->A。
2、singleTop模式:
如果一个以singleTop模式启动的Activity的实例已经存在于任务栈的栈顶, 那么再启动这个
Activity时,不会创建新的实例,而是重用位于栈顶的那个实例, 并且会调用该实例的
onNewIntent()方法将Intent对象传递到这个实例中。 举例来说,如果A的启动模式为
singleTop,并且A的一个实例已经存在于栈顶中, 那么再调用startActivity(new
Intent(this,A.class))启动A时, 不会再次创建A的实例,而是重用原来的实例,并且调
用原来实例的onNewIntent()方法。 这时任务栈中还是这有一个A的实例。如果以singleTop
模式启动的activity的一个实例 已经存在与任务栈中,但是不在栈顶,那么它的行为和
standard模式相同,也会创建多个实例。
3、singleTask模式:
只允许在系统中有一个Activity实例。如果系统中已经有了一个实例, 持有这个实例的任务将
移动到顶部,同时intent将被通过onNewIntent()发送。 如果没有,则会创建一个新的
Activity并置放在合适的任务中。
4、singleInstance模式:
保证系统无论从哪个Task启动Activity都只会创建一个Activity实例,并将它加入新的Task栈
顶 也就是说被该实例启动的其他activity会自动运行于另一个Task中。 当再次启动该
activity的实例时,会重用已存在的任务和实例。并且会调用这个实例 的onNewIntent()方
法,将Intent实例传递到该实例中。和singleTask相同, 同一时刻在系统中只会存在一个这
样的Activity实例。
二、具体应用
1、standard模式
用法:清单中注册说明,下同
作用:页面自身的多次调用会不断创建新对象放入堆栈中而不会复用
2、singleTop模式:
作用:如果栈顶Activity为我们要新建的Activity(目标Activity),那么就不会重复创建新的Activity。
3、singleTask模式:
作用:与singleTop模式相似,只不过singleTop模式是只是针对栈顶的元素,而singleTask模式下,如果task栈内存在目标Activity实例,则:将task内的对应Activity实例之上的所有Activity弹出栈。将对应Activity置于栈顶,获得焦点。
4、singleInstance(全局唯一)模式:
作用:是我们最后的一种启动模式,也是我们最恶心的一种模式:在该模式下,我们会为目标Activity分配一个新的affinity,并创建一个新的Task栈,将目标Activity放入新的Task,并让目标Activity获得焦点。新的Task有且只有这一个Activity实例。 如果已经创建过目标Activity实例,则不会创建新的Task,而是将以前创建过的Activity唤醒(对应Task设为Foreground状态)
查看全文
相关阅读:
Flask--配置文件
Flask--路由系统
Flask--视图
Flask--蓝图
Flask--静态资源
Flask--登录验证(多个装饰器)
Flask--session
CSS中的定位机制
四、DDL常见操作汇总
三、管理员必备技能
原文地址:https://www.cnblogs.com/Meng2113/p/13646819.html
最新文章
Python学习日记(十五) collections模块
Python学习日记(十四) 正则表达式和re模块
Python学习日记(十三) 递归函数和二分查找算法
Python学习日记(十二) 匿名函数
Python学习日记(十一) 内置函数
Python学习日记(十) 生成器和迭代器
Python学习日记(九) 装饰器函数
MongoDB 查询语法
SpringBoot中使用RestTemplate
在元素的装载数量明确的时候HashMap的大小应该如何选择。
热门文章
Springboot
redis批量删除脚本
RocketMq使用注意事项
spring执行事务提交后进行一些逻辑操作
jrebel 激活
Nginx报504 gateway timeout错误的解决方法
redis批量设置过期时间
Linux 启动流程
Flask--模板
Flask--特殊装饰器
Copyright © 2011-2022 走看看