一、生命周期祖传图片

二、生命周期各个周期的方法说明
- onCreate():不可见状态
当我们点击activity的时候,系统会调用activity的oncreate()方法,在这个方法中我们会初始化当前布局setContentLayout()方法。 - onStart():可见状态没有在前台显示无法交互
onCreate()方法完成后,此时activity进入onStart()方法,当前activity是用户可见状态,但没有焦点,与用户不能交互,一般可在当前方法做一些动画的初始化操作。 - onResume():可见状态
onStart()方法完成之后,此时activity进入onResume()方法中,当前activity状态属于运行状态 (Running),可与用户进行交互。 - onPouse():可见状态
当另外一个activity覆盖当前的acitivty时,此时当前activity会进入到onPouse()方法中,当前activity是可见的,但不能与用户交互状态。 - onStop():不可见状态
onPouse()方法完成之后,此时activity进入onStop()方法,此时activity对用户是不可见的,在系统内存紧张的情况下,有可能会被系统进行回收。所以一般在当前方法可做资源回收。 - onDestory():不可见状态
onStop()方法完成之后,此时activity进入到onDestory()方法中,结束当前activity。 - onRestart():可见状态
onRestart()方法在用户按下home()之后,再次进入到当前activity的时候调用。调用顺序onPouse()->onStop()->onRestart()->onStart()->onResume().
三、Activity之间跳转的生命周期
- 当AActivity切换BActivity的所执行的方法:
A:onCreate()->onStart()->onResume()->onPouse()
B:onCreate()->onStart()->onResume()
A:onStop()->onDestory() - 当AActivity切换BActivity(BActivity是以dialog形式存在的)所执行的方法:
A:onCreate()->onStart()->onResume()->onPouse()
B:onCreate()->onStart()->onResume()
四、Activity中onSaveInstanceState()方法和onRestoreInstanceState()方法
-
onSaveInstanceState函数在Activity生命周期中执行。
outState 参数的作用 :
数据保存作用 : Activity 生命周期结束时, 需要保存 Activity 状态的时候, 会将要保存的数据使用键值对的形式 保存在 Bundle 对象中; -
调用时机 :
Activity 被销毁的时候调用, 也可能没有销毁就调用了;
按下Home键 : Activity 进入了后台, 此时会调用该方法;
按下电源键 : 屏幕关闭, Activity 进入后台;
启动其它 Activity : Activity 被压入了任务栈的栈底;
横竖屏切换 : 会销毁当前 Activity 并重新创建; -
onSaveInstanceState方法调用注意事项 :
用户主动销毁不会调用 :当用户点击回退键或者调用了finish()方法时, 不会调用该方法。
调用时机不固定 : 该方法一定是在 onStop() 方法之前调用,但是不确定是在 onPause() 方法之前 还是 之后调用。
布局中组件状态存储 :每个组件都 实现了 onSaveInstance() 方法,在调用函数的时候,会自动保存组件的状态,注意:只有有 id 的组件才会保存。
关于默认的 super.onSaveInstanceState(outState) : 该默认的方法是实现组件状态保存的。 -
onRestoreInstanceState(Bundle outState):
方法回调时机 :在Activity被系统销毁之后恢复 Activity 时被调用,只有销毁了之后重建的时候才调用,如果内存充足,系统没有销毁这个Activity,就不需要调用。
Bundle 对象传递:该方法保存的Bundle对象在Activity恢复的时候也会通过参数传递到onCreate()方法中。
网友评论