之前面试Android时,面试官问过我Activity生命周期的问题,答得不是很好,翻看了一下书籍,在此将书里的知识做个笔记。
正常情况下Activity生命周期
正常情况下Activity的生命周期方法为依次为onCreate,onStart,onResume,onPause,onStop,onDestroy。
onStart,onResume的区别
onStart阶段的时候,Activity已经可见,但是还没有位于前台,可以理解为还无法进行交互。比如当Activity弹出一个对话框时,此时的Activity无法点击,就出处于这个阶段。
onResume阶段的时候不但已经可见了而且位于前台,可以交互。
Tips
1.onStop表示Activity已经停止运作,但不一定被销毁。onDestroy被调用表示Activity已经被销毁了。
2.用户打开新Activity或者按home键切回桌面时,会调用onPause,onStop。
按返回键返回上一个Activity会调用onPause,onStop,onDestroy。
3.回到原Activity时会调用onRestart,onStart,onResume
4.只有当前一个Activity的onPause执行后,下一个Activity(的onResume)才会启动
异常情况下的生命周期
1.当系统配置发生变化后(如屏幕转向),Activity可能会被销毁。此时系统会在调用onStop之前调用onSaveInstanceState,onSaveInstanceState只会在Activity被异常终止时调用。在Activity被重新创建时,系统会调用onRestoreInstanceState,来恢复数据。
恢复数据可以选择onCreate或者onRestoreInstanceState。
2.另外,当系统内存不足时,需要回收资源,也会优先回收优先级低的Activity。Activity的优先级由高到低依次是,前台Activity,可见非前台Activity,后台Activity(已经执行了onStop)。
由于这种原因被回收的Activity也会执行onSaveInstanceState,onRestoreInstanceState。
不带四大组件的进程会优先被杀死。