Activity 生命周期:
生命周期7个方法的调用时机:
1)onCreate:第一次创建这个Activity时,也就是系统中没有缓存当前的Activity时,这个方法首先被调用。调用之后这个Activity就会被压入所谓的Android Task栈中缓存起来,下次用时出栈就可以。所以,为了更加节约资源,我们一般把Activity所对应的layout中拥有的组件首先使用private作为这个Activity的私有成员,然后在onCreate方法中初始化,这样只要在Activity创建的时候,初始化一次组件就够了。
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方法。
6)onRestart:当这个Activity已经创建好缓存在Task栈中可以直接取出返回给客户时,这个方法就会被调用。也就是当这个Activity从Task栈中出栈的时候,这个方法会被调用。
7)onDestroy:如果在代码中显示调用了finish方法,或者系统资源不够用的时候,或者用户在当前Activity中按下了返回键时,这个方法就会被调用。这个方法被调用后,说明Task中没有这个Activity的缓存,那么下次启动这个Activity时就不是调用onReStart了而是调用onCreate从头开始。
Task概念:
1) A Task is a stack of activities
2)在应用程序启动时,第一个启动的Activity创建之后就会被压入Task栈中,紧接着如果这个时候又一个Activity被创建那么这个新的Activity又会被压入栈中,依次类推,Task栈就类似于Android系统的一个Activity换成机制。当我们点击返回按钮时,Task栈中的Activity会逐个弹出,如果这个Activity被finish了,那么这个Activity就不会缓存在Task栈中了,下次需要从新onCreate。
来源:oschina
链接:https://my.oschina.net/u/1989321/blog/363159