下面有一张图:详细的介绍了app的生命周期: 来自于官方文档:
如图所见,我们看见了7个生命状态,下面这个截图,介绍了每种生命状态所对应的调用情况:
第一个方法 onCreate() :
app在第一次调用的情况就会调用这个方法,在这个方法中你应该做的事情为:正常的静态设置:创建视图,将数据绑定到列表,等。onCreate()方法也提供了一个Boun也为您提供了一个入口,它的作用在于,如果你的Activity之前已经创建过然后关闭了,下次再启动的时候,这个Bundle参数就会把之前保存的一些数据传递过来,即Activity再次onCreate()的时候会直接恢复到之前的状态。接下来的就会调用onStart()方法。
第二个方法onRestart():
只有在Activity经历了onStop()但并没有onDestroy()的时候,再次运行这个Activity就直接会走到onRestart()方法。此时各种变量还保存着,并没有被回收掉,Activity只需要重新绘制界面而已。
第三个方法 onStart():
第四个方法 onResume()
这时候,Activity启动后必须走的一套流程已经走完了,此时用户不仅可以看到界面,还能进行相关的操作(如在EditText里面输入啦,点击Button啦)。在存放Activity的栈stack中,一个执行了onResume()后的Activity处于栈的最顶层,这并不难理解,在任何时候,你的系统只能有一个Activity处于这个状态。
第五个方法onPause()
当系统要恢复之前的某个Activity的时候,当前Activity会执行onPause()方法,在这个阶段通常会把一些未保存的数据保存起来,停止动画和其他一些消耗CPU的事情。onPause()一定要执行的快速,因为在它执行完毕之前,下一个Activity是无法恢复的,也可以认为,onPause()如果执行的慢了,就会把主线程阻塞。
第六个方法onStop()
当一个Activity对于用户来说不再可见的时候,就会执行onStop()方法,此时会有其他的Activity处于onResume()的状态并将处于onStop()的Activity覆盖掉。当从当前Activity启动一个新的Activity的时候,或者退出当前Activity以及杀死当前Activity的时候,都会执行onStop()方法。
第七个方法onDestroy()
这是一个Activity生命周期中的结束阶段,当你主动finish或者系统因为内存不足而杀死一个Activity的时候,就会执行onDestroy()方法。这个时候,Activity就彻底关闭了,占用的一些资源也会被释放掉(如果没有释放完全,那就是程序写的有问题,产生内存泄漏了)。