Activity的生命周期,BACK键和HOME对生命周期的影响

下面这张图详细的描述了Activity的整个生命周期:
直接上代码,注意看注释:
 
[java]  view plain copy
  1. public class HelloActivity extends Activity {  
  2.     public static final String TAG = "HelloActivity";  
  3.     /**  
  4.      * 第一个被运行的方法 
  5.      * 初始化页面 
  6.      * Bundle恢复上次的状态  
  7.      */  
  8.     @Override  
  9.     public void onCreate(Bundle savedInstanceState) {  
  10.         super.onCreate(savedInstanceState);  
  11.         setContentView(R.layout.main);  
  12.         Log.v(TAG, "onCreate");  
  13.     }  
  14.       
  15.     /** 
  16.      * 从onStop回到Activity的时候会执行 
  17.      * 按HOME键的时候会执行onStop,重新回到程序会执行这个方法 
  18.      */  
  19.     @Override  
  20.     protected void onRestart() {  
  21.         super.onRestart();  
  22.         Log.v(TAG, "onRestart");  
  23.     }  
  24.       
  25.     /** 
  26.      * 在onCreate,onRestart后面执行 
  27.      */  
  28.     @Override  
  29.     protected void onStart() {  
  30.         super.onStart();  
  31.         Log.v(TAG, "onStart");  
  32.     }  
  33.       
  34.     /** 
  35.      * 在onStart后面执行,执行这个方法后这个Activity就处于全部Activity堆栈的最上面 
  36.      * 进入用户可见可操作的状态 
  37.      */  
  38.     @Override  
  39.     protected void onResume() {  
  40.         super.onResume();  
  41.         Log.v(TAG, "onResume");  
  42.     }  
  43.       
  44.     /** 
  45.      * 当其他Activity启动时这个方法会执行 
  46.      * 按HOME和BACK都会执行这个方法 
  47.      * 最好在这个方法中提交或者保存数据,因为很有可能再也不会回到这个activity中。 
  48.      * 这个方法最好不要执行太长时间,因为下个activity开始执行前会等待这个方法返回。 
  49.      */  
  50.     @Override  
  51.     protected void onPause() {  
  52.         super.onPause();  
  53.         Log.v(TAG, "onPause");  
  54.     }  
  55.   
  56.     /** 
  57.      * activity很久没被显示,要被销毁,系统资源缺乏,都会调用这个方法 
  58.      * 按HOME和BACK都会执行这个方法 
  59.      */  
  60.     @Override  
  61.     protected void onStop() {  
  62.         super.onStop();  
  63.         Log.v(TAG, "onStop");  
  64.     }  
  65.   
  66.     /** 
  67.      * 调用finish方法,或者系统回收资源时调用 
  68.      */  
  69.     @Override  
  70.     protected void onDestroy() {  
  71.         super.onDestroy();  
  72.         Log.v(TAG, "onDestroy");  
  73.     }  
  74.       
  75. }  

 
PS:
  • HOME键的执行顺序:onPause->onStop->onRestart->onStart->onResume
  • BACK键的顺序: onPause->onStop->onDestroy->onCreate->onStart->onResume
  • onPause不要做太耗时的工作

你可能感兴趣的:(Android)