Activity生命周期和启动模式
2016-05-03 21:07
246 查看
onRestart:一般Activity从不可见变回可见时被回调。比如,从另外一个Activity返回,生命周期是onRestart->onStart->onResume
onStart,onResume区别:
onStart:Activity已经显示,但是用户不可见,不能与用户交互,仍然在后台
onResume:Activity已显示到前台,用户可见
Activity第一次启动
onCreate->onStart->onResume
打开一个新的Activity或切换到桌面:
onPause->onStop
注:如果新Activity采用了透明主题,那么onStop不会被调用!
不能在onPause做重量级的操作,因为,新的Activity要等onPause完成后才能执行onResum
我们知道多次启动同一个Activity时,系统会创建多个实例并把它们放到任务栈中,任务栈是一种”后进先出“的栈结构。
Activity4种LaunchMode
- standard
系统默认模式,每次启动都会创建一个新实例
用ApplicationContext启动Activity时,会报错。因为非Activity类型的Context没有任务栈。解决这个问题的方法是为启动的Activty指定FLAG_ACTIVITY_NEW_TASK标记位,这样启动时,就会创建一个新的任务栈。
- singleTop
如果新Activity已位于栈顶,不会重复创建。如果新的Activity已存在但不是位于栈顶,仍然会重复创建。
- singleTask
栈内复用模式。当新的Activity已存在任务栈中,把此Activity上面的Activity全部出栈,将存在的作为栈顶。
比如任务栈有ADCB,D是signleTask模式,再启动D后,任务栈变成AD
- signleInstance
单实例模式
onStart,onResume区别:
onStart:Activity已经显示,但是用户不可见,不能与用户交互,仍然在后台
onResume:Activity已显示到前台,用户可见
Activity第一次启动
onCreate->onStart->onResume
打开一个新的Activity或切换到桌面:
onPause->onStop
注:如果新Activity采用了透明主题,那么onStop不会被调用!
不能在onPause做重量级的操作,因为,新的Activity要等onPause完成后才能执行onResum
我们知道多次启动同一个Activity时,系统会创建多个实例并把它们放到任务栈中,任务栈是一种”后进先出“的栈结构。
Activity4种LaunchMode
- standard
系统默认模式,每次启动都会创建一个新实例
用ApplicationContext启动Activity时,会报错。因为非Activity类型的Context没有任务栈。解决这个问题的方法是为启动的Activty指定FLAG_ACTIVITY_NEW_TASK标记位,这样启动时,就会创建一个新的任务栈。
- singleTop
如果新Activity已位于栈顶,不会重复创建。如果新的Activity已存在但不是位于栈顶,仍然会重复创建。
- singleTask
栈内复用模式。当新的Activity已存在任务栈中,把此Activity上面的Activity全部出栈,将存在的作为栈顶。
比如任务栈有ADCB,D是signleTask模式,再启动D后,任务栈变成AD
- signleInstance
单实例模式
相关文章推荐
- 支付宝支付开发经验
- 支付宝支付开发经验
- 扫描枪在Android 系统上面扫描的时候缺少一位,<已解决>百度输入法的问题
- 第1课:通过案例对SparkStreaming 透彻理解三板斧之一
- 原码、反码和补码
- 12.链表中倒数第k个结点
- Volley框架GET POST请求
- [UnityUI]NGUI性能优化之ScrollView
- css3滤镜-投影(DropShadow)滤镜
- DB2远程连接方法---------db2cmd
- 仿LOL项目开发第一天
- 输入三个数,从大到小排列
- Swift 不完全函数第 2 部分:捕获前置条件错误
- CNN的近期进展与实用技巧(上)&&人脸识别简史与近期进展
- 0002-创建数据库和表空间
- Gunicorn启动Thrift服务
- main()是程序运行的第一个函数吗?
- c++第五次实验
- 输入姓名打印年龄练习
- 百度地图定位