Android中的Activity生命周期学习

作为Android中四大组件之一的Activity是最为重要的一个组件,今天学习了Activity的生命周期。

理解Activity的生命周期对于我们去开发大的灵活的应用很有帮助,在Android系统中Activity作为Activity栈来被管理,当前活动的Activity处于栈顶,之前的不活动的Activity就会被压入下面的称为不活动的Activity,来进行等待,如果该Activity重新变成栈顶,就会被重新恢复活动的状态;

看下自己画的截图:

         1:  Activity A正在运运行,然后又打开Activity B之后 Activity A就会退到栈的下一层,Activity B在栈顶.

           Android中的Activity生命周期学习    

2:如果用户点击后退按钮进行返回,或者前台的Activity结束这里(可以认为是正在运行的Activity B),此时该Activity就会被移除栈,直接被销毁;然后站内的上一个Activity(这里认为是Activity A)将会到栈顶,并且变成活动状态:   如图:

             Android中的Activity生命周期学习

            下面是代码日志截图:

           Android中的Activity生命周期学习

         

    3:接下来看下Activity生命周期中的四个重要状态

       活动状态                ----->  在屏幕的最前面(也就是在栈顶),获得焦点并且可见

       暂停状态                ----->  失去焦点,不过还是可见 例如:屏幕上面弹出来的Dialog

       停止状态                ----->  失去焦点,不可见

       销毁状态               ----->  被系统销毁

      Activity 生命周期回调图:

      Android中的Activity生命周期学习

         从上面的生命周期回调图中,可以把生命中周期份以一下三个过程:

   1:完整生命周期:Activity完整生命周期自第一次调用onCreate()开始,直至调用onDestroy()为止。ActivityonCreate()中设置并且进行初始化,而在onDestroy()中释放所有系统资源。

 2:可见生命周期: Activity可视生命周期onStart()调用开始直到相应的onStop()调用结束。在此期间,用户可以在屏幕上看到Activity,尽管它也许并不是位于前台或者也不与用户进行交互。在这两个方法之间,我们可以保留用来向用户显示这个Activity所需的资源。

 3:前台可见生命周期: Activity前台生命周期onResume()调用起,至相应的onPause()调用为止。在此期间,Activity位于前台最上面并与用户进行交互。Activity会经常在暂停和恢复之间进行状态转换

下面是Activity生命周期会进行回调的所有方法:

[java]

  1. <span style="font-size:16px;">    // onCreate 当Activity第一次启动的时候,回调这个方法,可以在此时完成Activity的一些初始化工作   
  2.     @Override  
  3.     protected void onCreate(Bundle savedInstanceState) {  
  4.         // TODO Auto-generated method stub   
  5.         super.onCreate(savedInstanceState);  
  6.     };  
  7.   
  8.     // 调用这个方法表示所属的Activity将要被展现给用户   
  9.     @Override  
  10.     protected void onStart() {  
  11.         super.onStart();  
  12.     }  
  13.   
  14.     // 当处于停止活动的状态的Activity需要在线展现给用户的时候,调用这个方法   
  15.     @Override  
  16.     protected void onRestart() {  
  17.         super.onRestart();  
  18.     }  
  19.   
  20.     // 当Activity和用户发生交互的时候调用这个方法   
  21.     @Override  
  22.     protected void onResume() {  
  23.         super.onResume();  
  24.     }  
  25.   
  26.     // 当当前的Activity失去焦点,不过依然可见,例如弹出一个对话框的时候   
  27.     // 如果我们需要保存数据,可以在这个状态进行保存   
  28.     @Override  
  29.     protected void onPause() {  
  30.         super.onPause();  
  31.     }  
  32.   
  33.     // 当一个Activity不再需要展示给用户的时候,注意一点:如果系统资源不够的时候   
  34.     // 系统会直接结束这个方法,就是不会调用这个方法,   
  35.     @Override  
  36.     protected void onStop() {  
  37.         super.onStop();  
  38.     }  
  39.   
  40.     // 当销毁Activity的时候,调用   
  41.     @Override  
  42.     protected void onDestroy() {  
  43.         super.onDestroy();  
  44.     }</span><span style="font-size: 14pt;">  
  45. </span>  

①:一个Activity的启动顺序:onCreate()--->onStart()--->onResume()Android中的Activity生命周期学习

 ②:当先打开一个Activity的时候  第一个Activity先会调用onPause() ----然后第二个Activity调用onCreate()--->onStart()--->onResume()---->第一个Activity调用onStop();Android中的Activity生命周期学习

③:返回到第一个Activity的时候 第二个Activity会先调用onPause()---->然后第一个Activity调用onRestart()--->onStart()--->onResume()---->第二个Activity接着调用onStop()——>onDestory();

Android中的Activity生命周期学习

下面来说说 Activity的onSaveInstanceState()和 onRestoreInstanceState()方法

  如果我们需要在Activity销毁前保存一些临时性的数据,onPause()就比较可以进行数据的持久化的保存,此时我们可以使用onSaveInstanceState()和 onRestoreInstanceState()方法。只要重写上面两个方法,在这里进行数据保存操作就OK了

相关推荐