「这是我参与2022首次更文挑战的第20天,活动详情查看:2022首次更文挑战」
Activity生命周期
我们先看一下经典的生命周期图
1.生命周期含义
一次完整是生命周期顺序是:onCreate()->onStart()->onResume()->...->onPause()->onStop()->onDestroy()
我们来分析生命周期中各个方法
- onCreate() 对Activity进行初始化,我们在这个方法里面调用setContentView加载布局并且对控件和变量进行初始化等。但是这个时候其实还不可见,并且这个方法只会在Activity生命周期执行一次
- onReStart() 当一个处于onStop()状态的Activity需要被唤醒到前台,就需要调用onReStart()方法
- onStart() Activity的界面已经显示,但是还不能交互
- onResume() Activity界面显示,并且可以交互
- onPause() Activity被覆盖,还可见,但是已经失去焦点,不能与用户交互
- onStop() Activity不可见,用户的输入焦点在另一个Activity上
- onDestroy() 系统通过调用onDestroy()方法将Activity的实例彻底从内存中移除
2.不同状态生命周期
假设A位于栈顶,从A跳转到B,那么对于AB来说,具体会调用那些生命周期呢?
- B全部挡住了A: A.onPause()->B.onCreate()->B.onStart()->B.Resume()->A.onStop()
- B点击了返回键,回到桌面: B.onPause()->A.onRestart()->A.onStart()->A.onResume()->B.onStop()->B.onDestroy()
- 接着又按下了Home键,系统回到的桌面,生命周期为: A.onPause()->A.onStop()
3.Activity常见函数
(1)onSaveInstanceState()
- Activity被覆盖或在后台,系统资源不足将它杀死,此方法会被调用
- 用户改变屏幕方向,此方法会被调用
- 当前Activity跳转到其他Activity或者按Home键回到主屏,此方法会被调用
(1)onRestoreInstanceState()
和onSaveInstanceState对应
- Activity被覆盖或退居后台,系统资源不足将它杀死,然后用户又回到此Activity,此方法会被调用
- 用户改变屏幕方向,重建的过程中,此方法会被调用
- 可以重写此方法,恢复一些临时数据
- onRestoreInstanceState的调用顺序是在onStart之后
Activity生命周期大概学习到这来,Activity生命周期比较简单,而且网上资料比较多