Activity的生命周期和启动模式
来源:互联网 发布:淘宝店铺招牌是什么 编辑:程序博客网 时间:2024/06/16 19:31
Activity的生命周期:
1.典型情况下Activity的生命周期
onCreate():创建Activity的时候调用,此时可以做一些初始化界面的工作
onRestart():当A界面启动B界面,然后返回B界面会调用A界面的这个方法。重新启动界面
onStart():Activity从变为可见,但是还不能跟用户进行交互
onResume():Activity可见,并且与用户可交互
onPause():Activity暂停,界面失去焦点,但是界面依旧可见
onStop():Acitivity界面停止,界面不可见
onDestory():Activity被销毁说明:界面A启动界面B,会先调用界面A的onPause()方法,才会调用界面B的onResume()方法。
原因:在ActivityThread的scheduleLaunchActivity()方法中可以看出,最直接的办法就是写个demo证明,如下:
2.异常情况下的生命周期
在异常情况下,除了上述说的7个生命周期外,系统还会调用onSaveInstanceState()方法来保存当前Activity的状态,里面保存的数据类型为Bundle类型,当Activity被重新创建的时候,系统会调用onRestoreInstanceState()方法来恢复之前保存的数据。最常见的情况就是屏幕的旋转,如图所示:
上图的Log信息是屏幕有竖屏旋转到横屏时候的生命周期的变化,可以看到onSaveInstanceState()方法的调用是在onStop()之前,onRestoreInstanceState()的方法调用是在onResume()方法之前。另外需要注意的是,系统有两个onSaveInstanceState()方法可以继承,而这里状态的保存是在带一个参数的onSaveInstanceState()方法中执�%C的。如下图:
这里说到横竖屏的切换,通过实验,竖屏切换为横屏与横屏切换为竖屏的生命周期是一样的,网上很多说横屏切换为竖屏时,生命周期会执行两次,但是自己写的demo是一次。
当然,如果不希望横竖屏切换的时候Activity被销毁,那么可以在mainfest清单文件中设置configChanges:orientation;这时候横竖屏切换时,生命周期如下:
说明:上图log信息是竖屏切换横屏然后切到竖屏的信息,可以看到切换时生命周期不会再次调用,而是调用onConfigurationChanged()方法。
另外在清单文件中除了给configChanges属性设置orientation以外,还设置了screenSize,原因是我的minSdkVersion和targetSdkVersion有一个大于13。原因如下:
现在对configChanges常用的几个值介绍下:
local:设备的本地位置发生了变化一般指切换了系统语言
orientation:屏幕方向发生了变化
screenSize:当屏幕的尺寸信息发生了改变,当旋转设备屏幕时,屏幕尺寸发生变化,这个选项比较特殊,当编译选项中的minSdkVersion和targetSdkVersion均低于13时,此选项不会导致Activity重启,否则会导致Activity重启(API13新添加)
keyboardHidden:键盘的可访问性发生了改变,比如用户调出了键盘
当然还有一些其他值,这里列出常用的。通过上面解释,我想上面设置screenSize的原因也就说明了。
Activity的优先级:
前台Activity:正在和用户交互的Activity,优先级最高
可见非前台Activity:比如Activity中弹出了一个对话框,导致Activity可见但是位于后台无法和用户直接交互
后台Activity:已经被暂停的Activity,比如执行了onStop,优先级最低。
资源内存不足的时候会导致低优先级的Activity被杀死。
Activity的启动模式:
IntentFilter的匹配原则
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式总结
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- 第一章 Activity的生命周期和启动模式
- 第一章 Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式详解
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- 第一章: Activity的生命周期和启动模式:
- Activity的生命周期和启动模式
- 二叉搜索树BST的C++实现
- 长度为n的数组,取其中k个,要求和为sum,求有多少种取法
- 粒子系统
- 生产者和消费者问题
- 浮点数在内存中的存储方式
- Activity的生命周期和启动模式
- “玲珑杯”ACM比赛 Round #4 G -- See car
- 集合框架
- linux c++ 高并发tcp服务器架构
- matlab_rand生成随机数
- maven 添加第三方依赖
- 基于C#分步式聊天系统的在线视频直播系统设计
- Codeforces Round #378 (Div. 2) C && Codeforces 733C (模拟)详解(两种写法)
- MediaRecorder录制音频 保存到SD卡