一个Activity的启动顺序:
onCreate()——>onStart()——>onResume()
当另一个Activity启动时:
第一个Activity onPause()——>第二个Activity onCreate()——>onStart()——>onResume()——>第一个Activity onStop()
当返回到第一个Activity时:
第二个Activity onPause()——>第一个Activity onRestart()——>onStart()——>onResume()——>第二个Activity onStop()——>onDestroy()
一个Activity的销毁顺序:
(情况一)onPause()——><Process Killed>
(情况二)onPause()——>onStop()——><Process Killed>
(情况三)onPause()——>onStop()——>onDestroy()
每一个活动( Activity )都处于某一个状态,对于开发者来说,是无法控制其应用程序处于某一个状态的,这些均由系统来完成。但是当一个活动的状态发生改变的时候,开发者可以通过调用 onXX() 的方法获取到相关的通知信息。
在实现 Activity 类的时候,通过覆盖( override )这些方法即可在你需要处理的时候来调用。
一、 onCreate :当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。
onCreate 方法有一个参数,该参数可以为空( null ),也可以是之前调用 onSaveInstanceState ()方法保存的状态信息。
二、 onStart :该方法的触发表示所属活动将被展现给用户。
三、 onResume :当一个活动和用户发生交互的时候,触发该方法。
四、 onPause :当一个正在前台运行的活动因为其他的活动需要前台运行而转入后台运行的时候,触发该方法。这时候需要将活动的状态持久化,比如正在编辑的数据库记录等。
五、 onStop :当一个活动不再需要展示给用户的时候,触发该方法。如果内存紧张,系统会直接结束这个活动,而不会触发 onStop 方法。 所以保存状态信息是应该在onPause时做,而不是onStop时做。活动如果没有在前台运行,都将被停止或者Linux管理进程为了给新的活动预留足够的存储空间而随时结束这些活动。因此对于开发者来说,在设计应用程序的时候,必须时刻牢记这一原则。在一些情况下,onPause方法或许是活动触发的最后的方法,因此开发者需要在这个时候保存需要保存的信息。
六、onRestart :当处于停止状态的活动需要再次展现给用户的时候,触发该方法。
七、 onDestroy :当活动销毁的时候,触发该方法。和 onStop 方法一样,如果内存紧张,系统会直接结束这个活动而不会触发该方法。
· onSaveInstanceState :系统调用该方法,允许活动保存之前的状态,比如说在一串字符串中的光标所处的位置等。
通常情况下,开发者不需要重写覆盖该方法,在默认的实现中,已经提供了自动保存活动所涉及到的用户界面组件的所有状态信息。
--转自