itlgl / note

使用github的issues功能记录日常的笔记
http://itlgl.com/note
5 stars 2 forks source link

Activity生命周期 #49

Open itlgl opened 3 years ago

itlgl commented 3 years ago

对Android中Activity的生命周期做个记录。 先看Activity的生命周期流程图:

activity_lifecycle

1、A启动B,再点返回键返回A,生命周期回调

A启动B: (A)onPause → (B)onCreate → (B)onStart → (B)onResume → (A)onStop 在B点击返回键返回到A: (B)onPause → (A)onRestart → (A)onStart → (A)onResume → (B)onStop → (B)onDestroy

2、A启动透明Activity C,再点返回键返回A,生命周期回调

A启动透明C: (A)onPause → (C)onCreate → (C)onStart → (C)onResume 在C点击返回键返回到A: (C)onPause → (A)onResume → (C)onStop → (C)onDestroy

3、当横竖屏切换时的生命周期

当切换到横屏时,A+表示新的activity实例: (A)onPause → (A)onStop → (A)onDestory → (A+)onCreate → (A+)onStart → (A+)onResume 当切换回竖屏时: (A)onPause → (A)onStop → (A)onDestory → (A+)onCreate → (A+)onStart → (A+)onResume

疑问:网上有blog写切回竖屏时会执行两遍生命周期方法,是由于Android版本不同?待确认

4、 点击home/点击最近任务的生命周期

点击home/最近任务: (A)onPause → (A)onStop 返回到A界面: (A)onRestart → (A)onStart → (A)onResume

5、各个生命周期的理解

onCreate:这是Activity生命周期的第一个方法,此时Activity在后台,还不可见 onStart:此时Activity已经可见,但是还没有到前台,不能进行交互操作 onResume: 此时Activity出现在前台并可见,此时可以进行独占的操作(比如打开相机) onPause:此时Activity仍然在前台并可见,可以进行一些轻量级的释放操作,android中指定如果onPause在500ms即0.5秒内没有执行完毕的话就会强制关闭Activity onStop:此时Activity已经不可见,但是Activity对象还在内存中,没有被销毁 onDestory:此阶段Activity对象即将销毁,不可见,可以进行一些资源释放操作 onRestart:当Activity重新恢复可见时的回调,比如从其他Activity返回或者按Home键后回到应用,一般用不到这个回调

综上,onCreate、onDestory表示Activity的创建和销毁,onStart、onStop表示Activity的可见和不可见,onResume、onPause表示Activity是否可进行交互和编辑

参考资料: