Activity的四种启动模式
来源:互联网 发布:阿里云与阿里巴巴 编辑:程序博客网 时间:2024/06/07 03:15
前言
我们都知道,android内部是通过回退栈来管理activity的,既然是通过栈来管理,那么activity就能够巧妙的利用栈来做一些事情,例如activity的四种启动模式,都是和activity栈有关系的。
Activity的四种启动模式
在一些特殊的情况下,我们可能对activity的实例做一些特殊的处理,可能要求整个应用只有一个activity,android系统为我们提供了这些功能,只要在android的清单文件中注册activity时设置它的启动模式即可。
标准启动模式(standard):
这是activity的标准启动模式,activity默认以这种方式启动,这种模式下activity可以被多次实例化。也就是说同一个任务栈里可以有多个相同的该activity实例。例如:在ActivityA启动ActivityA则会创建一个新的activity对象,也就是任务栈里此时会有两个ActivityA,点击回退按钮上面的activityA出栈,下面的仍然是ActivityA。栈顶复用模式(singleTop):
如果activity的实例已经存在与栈顶,那么当再启动一个相同的activity时,会复用这个activity实例而不会新创建一个activity,并且会调用该实例的onNewIntent()方法将intent对象传递到这个实例中。例如:ActivityA在栈顶,调用startActivity来启动一个新的ActivityA,则仍然使用这个activity,界面不会有任何变化,如果ActivityA不在栈顶,则会新建一个实例ActivityA。栈内复用模式(singleTask):
如果一个activity设置了这种启动模式,那么在一个任务栈中只能有一个该activity的实例,如果任务栈中还没有该activity,会新创建一个并放在栈顶,如果已经存在activity,系统会销毁在该activity上所有的activity,最终让该activity位于栈顶,同事回调该activity的onNewIntent()方法。- 单例模式(singleInstance):
如果一个activity设置了该种模式,那么该activity会在一个独立的任务中开启,并且这个任务只有一个实例,被该实例启动的其它activity会自动运行在另一任务中。当再次启动该activity实例时,会重用已存在的任务和实例,并且调用该实例的onNewIntent()方法将intent对象传递到该实例中。
结语
和singleTask不同的是:同一时刻系统中只会存在一个这样的activity实例,而singleTask可以有多个实例,只要在不同的任务栈中即可,比如应用a,b分别启动singleTask模式的该activity,那么a和b中都会存在一个这样的实例,因为应用a,b都分别有自己的activity任务栈。
- Activity的四种启动模式
- Activity的四种启动模式
- Activity的四种启动模式2
- Activity的四种启动模式
- activity的四种启动模式
- Activity启动的四种模式
- Activity的四种启动模式
- activity 的四种启动模式
- activity 的四种启动模式
- 分析Activity的四种启动模式
- Activity的四种启动模式
- Activity的四种启动模式
- Activity的四种启动模式
- Activity 四种启动模式的区别
- Activity的四种启动模式
- activity 的四种启动模式
- Activity的四种启动模式
- Activity的四种启动模式(LaunchMode)
- OpenCV3 -跨平台+相机处理
- iOS框架集合:
- iOS里面Objective-C(OC)方法的懒加载
- iOS平台 HEAL 1.1.0 版本 震撼上线 邀你前来体验
- java实现ArrayList顺序表
- Activity的四种启动模式
- 关于mysql5.7中创建用户无法登录及grant操作无效问题的处理
- JDK源码-Collection-toString()
- |1164|C语言实验——矩阵转置
- PO,VO,TO,BO,DAO,POJO的解释
- 转载的ctf练习链接
- JqGrid 动态操作列显示/隐藏
- http-equiv参数详解
- 【java8】持续精进-之流式数据处理