1.1.安卓3.2(API 13)之前:
- 不设置Activity 的 android:configChanges 时,切屏会重新调用生命周期,切横屏调用一次,切竖屏调用两次。
- 设置 Activity 的 android:configChanges="orientation" 时,切屏都会重新调用生命周期,切横屏和竖屏都是调用一次。
- 设置 Activity 的 android:configChanges="orientation|keyboardHidden" 时,切屏不会调用生命周期,但是会调用onConfigurationChanges() 方法。
1.2.安卓3.2(API 13)开始:
- 设置 Activity 的 android:configChanges="orientation|screenSize"时,切屏不会重新调用生命周期,但是会调用onConfigurationChanges() 方法。
- 其他情况都是切横屏和竖屏都是调用一次生命周期。
2.onSaveInstanceState()和onRestoreIntanceState()方法
onSaveInstanceState():用于保存一些临时性的状态,在Activity被杀掉之前调用保存每个实例的状态。如:在内存不足或者用户直接按home键的时候,由系统销毁Activity A时,该方法会被调用,通过该方法可以有机会保存其用户界面状态,使得用户回到A后,通过onRestoreIntanceState()方法 或者onCreate(Bundle)恢复页面状态。
3.安卓中进程的优先级
1.前台进程:
即和用户交互的Activity或者Activity用到的Service等,如果系统内存不足,前台进程是最后被杀死的。
2.可见进程:
处于暂停状态的Activity或者绑定在其上的Service等,即用户可见,但因失去焦点而无法和用户交互。
3.服务进程:
其中运行着通过调用StartService()方法启动的Service,虽然用户不可见,但是是用户所关心的,例如:不在音乐界面播放的音乐,不在下载页面下载的文件。当系统内存不足时,前面两个进程就会终止。
4.后台进程:
其中运行着执行onStop()方法而停止的进程,但不是用户当前关心的,例如:挂在后台的QQ,这时的进程系统一旦没有了内存就会首先被杀死。
5.空进程:
不包含任何应用的进程,这样的进程,系统一般不会让其存在。
参考文章:https://juejin.im/post/5e5c5e306fb9a07cbe346d71