activity的四种加载模式
2015-11-19 14:53
204 查看
在android里,有4种activity的启动模式,分别为: standard, singleTop, singleTask和singleInstance, 其中standard和singleTop类似, singleTask和singleInstance类似, 用法如下:
(1).standard和singleTop
这两种加载模式下, 同一个task中可以存在一个activity的多个实例, 并且可以位于activity栈的任意位置。
先举个例子:
假设目标task的activity栈为: A->B->C->D(栈底->栈顶)
在程序中调用startActivity(D)
如果D是standard模式, 则activity栈变为:
A->B->C->D->D, 也就是会重新创建一个D实例
如果D是singleTop模式, 则activity栈变为:
A->B->C->D, 不会创建D实例, 就是说如果D在目标task 的activity栈的栈顶, 则不会创建新的实例, 而是调用D的onNewIntent()方法, 反之如果D不在目标task 的activity栈的栈顶, 则会重新创建一个D实例
(2). singleTask和singleInstance
这两种加载模式下, 同一个task中只会存在一个activity的实例, 如果通过startActivity()启动,则调用onNewIntent()方法, 而不是创建一个新的实例。这两种模式下, activity实例均位于activity栈的栈底。
这两种加载模式的区别:
假设一个Activity的实例A 采用如下两种加载模式:
singleTask:
如果A调用startActivity(B)启动B实例, 则A和B位于同一个task中。
singleInstance:
如果A调用startActivity(B)启动B实例, 则系统会自动给intent添加一个属性FLAG_ACTIVITY_NEW_TASK, 将B实例放入到一个新的task中, 也就是说A实例所在的task中只能有A自己, 不能存在其他实例
(1).standard和singleTop
这两种加载模式下, 同一个task中可以存在一个activity的多个实例, 并且可以位于activity栈的任意位置。
先举个例子:
假设目标task的activity栈为: A->B->C->D(栈底->栈顶)
在程序中调用startActivity(D)
如果D是standard模式, 则activity栈变为:
A->B->C->D->D, 也就是会重新创建一个D实例
如果D是singleTop模式, 则activity栈变为:
A->B->C->D, 不会创建D实例, 就是说如果D在目标task 的activity栈的栈顶, 则不会创建新的实例, 而是调用D的onNewIntent()方法, 反之如果D不在目标task 的activity栈的栈顶, 则会重新创建一个D实例
(2). singleTask和singleInstance
这两种加载模式下, 同一个task中只会存在一个activity的实例, 如果通过startActivity()启动,则调用onNewIntent()方法, 而不是创建一个新的实例。这两种模式下, activity实例均位于activity栈的栈底。
这两种加载模式的区别:
假设一个Activity的实例A 采用如下两种加载模式:
singleTask:
如果A调用startActivity(B)启动B实例, 则A和B位于同一个task中。
singleInstance:
如果A调用startActivity(B)启动B实例, 则系统会自动给intent添加一个属性FLAG_ACTIVITY_NEW_TASK, 将B实例放入到一个新的task中, 也就是说A实例所在的task中只能有A自己, 不能存在其他实例
相关文章推荐
- java regex possissive relunctant
- 黑马程序员日记-11
- Netty框架初探
- iOS 处理图片的一些小 Tip
- 很好的jsp+servlet+javaBean实现数据分页代码例子
- js倒计时,页面刷新时,不会从头计时
- Fresco和Picasso
- 随记unicode解码问题
- 使用Gaps做手游服务器性能测试的一点心得
- Matlab读取并按帧显示视频代码
- kendoUI 简单增删改查
- Mysql slave 同步错误解决
- Tab滑动
- JAVA实现EXL的导入导出功能
- Lambada表达式
- KVC和KVO基本知识点
- Linux及Mac OS X修改主机名方法及优先级比较
- 黑马程序员日记-10
- FaceBook推出的Android图片加载库-Fresco
- RT-Thread下的串口驱动程序分析