Activity 生命周期:
缓存
生命周期7个方法的调用时机:spa
1)onCreate:第一次建立这个Activity时,也就是系统中没有缓存当前的Activity时,这个方法首先被调用。调用以后这个Activity就会被压入所谓的Android Task栈中缓存起来,下次用时出栈就能够。因此,为了更加节约资源,咱们通常把Activity所对应的layout中拥有的组件首先使用private做为这个Activity的私有成员,而后在onCreate方法中初始化,这样只要在Activity建立的时候,初始化一次组件就够了。orm
2)onstart:当这个Activity成为用户可见状态时,也就是在手机界面上正确显示的时候这个方法会被调用。因此,若是一个Activity以前已经建立好了,下次再次调用时(好比返回按钮)就会从Task栈中获取直接返回给用户,那么就不会再调用onCreate了,而是先调用onRestart,而后等到用户可见状态时调用onStart。生命周期
3)onResume:当这个Activity成为用户可见状态并且用户能够获取焦点时,也就是在onStart以后,当这个视图能够与用户交互时这个方法会被调用。这个方法调用完成以后,整个Activity就是处于运行状态了。游戏
4)onPause:当一个Activity正在使用,这时另外一个Activity开始启动(比好比玩游戏的时候忽然来电话)时,那么前面那个Activity会调用onPause方法,使这个Activity处于暂停状态。新的Activity若是第一次建立就会调用OnCreate不然调用onRestart。资源
5)onStop:当这个Activity被新的Activity彻底遮住时,也就是新的Activity彻底遮挡了这个Activity,那么这个Activity就会调用onStop方法。it
6)onRestart:当这个Activity已经建立好缓存在Task栈中能够直接取出返回给客户时,这个方法就会被调用。也就是当这个Activity从Task栈中出栈的时候,这个方法会被调用。程序
7)onDestroy:若是在代码中显示调用了finish方法,或者系统资源不够用的时候,或者用户在当前Activity中按下了返回键时,这个方法就会被调用。这个方法被调用后,说明Task中没有这个Activity的缓存,那么下次启动这个Activity时就不是调用onReStart了而是调用onCreate从头开始。方法
Task概念:im
1) A Task is a stack of activities
2)在应用程序启动时,第一个启动的Activity建立以后就会被压入Task栈中,紧接着若是这个时候又一个Activity被建立那么这个新的Activity又会被压入栈中,依次类推,Task栈就相似于Android系统的一个Activity换成机制。当咱们点击返回按钮时,Task栈中的Activity会逐个弹出,若是这个Activity被finish了,那么这个Activity就不会缓存在Task栈中了,下次须要重新onCreate。