Activity生命周期

Baron Zeng bio photo By Baron Zeng

1.Android生命周期大致可分为三个状态:

  • stop:

  • pause:此时这个activity在前台仍然部分可见, 但是另一个应用在它的上面运行

  • active:此时,activity在前台是完全可见的

2. 应用开始显示

  • activity一开始会调用onCreate,当activity可见后,会调用onStart,onResume

  • 当activity部分可见时,会调用onPause,当activity完全不可见时,会调用onStop。

  • 如果用户退出这个应用,或者由于其他原因被杀了,onDestroy会被调用

3.应用不在前台

  • 当应用不在前台,但是占用很多资源时,android可能会终止该应用。

  • 这时候当用户再次回到应用时,会再次调用onCreate方法。

  • 如果如没有被系统终止,当用户再次回到这个应用时,此时会调用onRestart,onRestart再调用onStart

4.应用打开至退到后台

  • 一个应用打开,会调用onCreate,onStart,onResume

  • 一个应用退到后台(没有退出应用),会调用onPause,onStop

  • 但是当应用占用资源多时,会调用onDestroy,所以一般会在onStop里存储应用的状态,因为应用被destroy的时机是不可控的。

5.entire lifetime(整个生命)

  • 从调用onCreate开始到onDestroy结束,比如要下载东西时,在onCreate会创建一个线程,在onDestroy结束线程

6.foreground lifetime(前台生命)

  • onResume和onPause这两个方法会被经常调用在这两个方法之间,activity会显示在其他activity之上,一个activity会常常在这两个状态之差转换,所以里面重写的方法要轻量(lightweight)一些。

7. visible lifetime (可视生命)

  • onStart和onStop之间,这个期间activity可视,但是不一定是在最上面(foreground),或者和用户交互中。

  • 可以在这两个方法里面操作一些资源,比如在onStart注册BroadcastReceiver在onStop里面注销BroadcastReceiver。

  • 当activity显示或者隐藏的时候这两个方法会被调用

8.onPause这个方法是用来持久化保存一些未保存的数据

Activity生命周期图