Activity生命周期与模拟器横竖屏切换问题
来源:互联网 发布:淘宝如何发布视频评论 编辑:程序博客网 时间:2024/06/06 06:45
Activity的生命周期用下图来理解。
Activity的生命周期如上图所示。
当一个Activity从启动到在前台可见经历的过程为
onCreate()->onStart()->onResume()
一个应用在前台可见时,按手机的返回键,其调用方法过程为onPause()->onStop()->onDestory()
一个应用在前台可见时,按手机Home键,其调用方法过程为
onPause()->onStop()
按Home键后再打开应用,其调用方法过程为
onRestart()->onStart()->onResume()
横竖屏切换
当切换横竖屏时,默认情况下Activity会先执行onPause()->onStop()->onDestory() 然后再重新调用 onCreate()->onStart()->onResume().
可以看出,因为Activity被销毁后又重建,导致之前的一些状态数据被“刷新”了。解决的关键在于在Activity被销毁之前把这些状态信息或者对象保存下来,等到Activity重建的时候再返回给它。
我们可以在Actiivity中覆盖 onSaveInstanceState(Bundle)方法,将一些数据保存在Bundle中,然后在onCreate(...)方法中取回这些数据。
当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity时,onSaveInstanceState() 会被调用。但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。因为在这种情况下,用户的行为决定了不需要保存Activity的状态。通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。
注意,我们在Bundle中存储和回复的数据类型只能是基本数据类型以及可以实现Serializable接口的对象,因此创建自己的定制类时,记得实现Serializable接口。
使用onSaveInstanceState(Bundle)方法后
切换横竖屏时,Activity将会执行onPause()->onSaveInstanceState()->onStop()->onDestory() 然后再调用 onCreate()->onStart()->onResume().
调用子Activity时,将会执行onPause()->onSaveInstanceState()->onStop() 返回父Activity时 将调用 onRestart()->onStart()->onResume().
注意,在模拟器中如果使用4.4.2系统,会出现切换横屏Activity内容无变化的现象,初步估计是SDK的bug,使用4.2.2版本运行正常,该问题有待在真机中测试。
- Activity生命周期与模拟器横竖屏切换问题
- Activity横竖屏切换生命周期
- Activity横竖屏切换生命周期
- android activity生命周期以及横竖屏切换问题
- Android横竖屏切换时Activity的生命周期问题
- 关于横竖屏切换时Activity生命周期的问题
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- android 横竖屏切换,activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- C程序的存储空间
- POJ 3661-Running(DP)
- iOS浏览器上请求返回正确,代码报错
- hive中分组取前N个值的实现
- Shell脚本中判断文件,目录是否存在或者具有权限 (原创)
- Activity生命周期与模拟器横竖屏切换问题
- 命令:linux两个电脑间传送文件方法
- cocos2d-x学习之给CCLayer设置单点触摸
- Copy and Paste Unity Animation Curves / Extract Animation Curve From Animation
- 在Yaf中使用Zf2的配置和服务管理器
- 理解 Scroll Views
- git备忘
- DecimalFormat用法
- 保存别人的解锁的方法