Summ3r

导航

Android学习之初识Android-Activity生命周期

在Activity生命周期之前先要说一下Activity栈,Activity栈保存了所有正在运行且没有终止的所有的Activity,Activity也遵循“先进后出”的原则。

Activity的活动状态与Activity在栈中的位置有密切的关系,而且,Android在系统资源不足的时候,也是从Activity栈中选择哪些Activity是可以终止的,一般来讲,Activity系统会优先选择终止处于目前是停止状态并且比较靠近Activity栈底的Activity。

 

结合实例:

Activity的生命周期是指Activity从启动到销毁的过程。

Activity有四种状态:活动状态  暂停状态  停止状态  非活动状态

先看下Actvity的七个生命周期函数以及说下这几个函数都是在什么时候调用的:

函数

是否可终止

说明

onCreate

当Activity第一次启动时将调用这个函数,在这个函数里我们要做的是要进行Activity的初始化,例如创建指定Activity的布局文件、数据的绑定等

onStart

当Activity显示在屏幕上的时候将调用这个函数

onRestart

当Activity从停止状态进入活动状态前,将调用这个函数

onResume

当Activity获得焦点,也就是说Activity能够与用户交互的时候将调用这个函数,这个时刻Activity位于Activity栈的顶端

onPause

当Activity进入暂停状态将调用这个函数,但在这个时刻我们一般用来保存持久的数据或者释放占用的资源。

onStop

当Activity完全被遮时将调用这个函数,记住是全部被遮

onDestory

当Activity在被终止前,即将进入非活动状态前,将调用该函数,一般以下两种情况下会调用onDestory函数1、调用Activity的finish方法2、当Android系统资源不足的时候

 

知道了这些函数和结合上面的图我们来看一个例子来更好的理解下Android的生命周期

  1. package com.szy.activity;  
  2.   
  3.    
  4.   
  5. import android.app.Activity;  
  6.   
  7. import android.content.Intent;  
  8.   
  9. import android.os.Bundle;  
  10.   
  11. import android.util.Log;  
  12.   
  13. import android.view.View;  
  14.   
  15. import android.view.View.OnClickListener;  
  16.   
  17. import android.widget.Button;  
  18.   
  19.    
  20.   
  21. public class MainActivity extends Activity  
  22.   
  23. {  
  24.   
  25.        private final static String TAG="MainActivity";  
  26.   
  27.        private Button secondBtn=null;  
  28.   
  29.        private Button thirdBtn=null;  
  30.   
  31.          
  32.   
  33.        @Override  
  34.   
  35.        public void onCreate(Bundle savedInstanceState)  
  36.   
  37.        {  
  38.   
  39.               super.onCreate(savedInstanceState);  
  40.   
  41.               setContentView(R.layout.main);  
  42.   
  43.               secondBtn=(Button)findViewById(R.id.secondBtn);  
  44.   
  45.               thirdBtn=(Button)findViewById(R.id.thirdBtn);  
  46.   
  47.               secondBtn.setOnClickListener(listener);  
  48.   
  49.               thirdBtn.setOnClickListener(listener);  
  50.   
  51.               Log.i(TAG, "MainActivity-->onCreate");  
  52.   
  53.        }  
  54.   
  55.    
  56.   
  57.        @Override  
  58.   
  59.        protected void onDestroy()  
  60.   
  61.        {  
  62.   
  63.               super.onDestroy();  
  64.   
  65.               Log.i(TAG, "MainActivity-->onDestroy");  
  66.   
  67.        }  
  68.   
  69.    
  70.   
  71.        @Override  
  72.   
  73.        protected void onPause()  
  74.   
  75.        {  
  76.   
  77.               super.onPause();  
  78.   
  79.               Log.i(TAG, "MainActivity-->onPause");  
  80.   
  81.               try  
  82.   
  83.               {  
  84.   
  85.                      Thread.sleep(2000);  
  86.   
  87.               } catch (InterruptedException e)  
  88.   
  89.               {  
  90.   
  91.                      // TODO Auto-generated catch block   
  92.   
  93.                      e.printStackTrace();  
  94.   
  95.               }  
  96.   
  97.        }  
  98.   
  99.    
  100.   
  101.        @Override  
  102.   
  103.        protected void onRestart()  
  104.   
  105.        {  
  106.   
  107.               super.onRestart();  
  108.   
  109.               Log.i(TAG, "MainActivity-->onRestart");  
  110.   
  111.        }  
  112.   
  113.    
  114.   
  115.        @Override  
  116.   
  117.        protected void onResume()  
  118.   
  119.        {  
  120.   
  121.               super.onResume();  
  122.   
  123.               Log.i(TAG, "MainActivity-->onResume");  
  124.   
  125.        }  
  126.   
  127.    
  128.   
  129.        @Override  
  130.   
  131.        protected void onStart()  
  132.   
  133.        {  
  134.   
  135.               super.onStart();  
  136.   
  137.               Log.i(TAG, "MainActivity-->onStart");  
  138.   
  139.        }  
  140.   
  141.    
  142.   
  143.        @Override  
  144.   
  145.        protected void onStop()  
  146.   
  147.        {  
  148.   
  149.               super.onStop();  
  150.   
  151.               Log.i(TAG, "MainActivity-->onStop");  
  152.   
  153.        }  
  154.   
  155.          
  156.   
  157.        private OnClickListener listener=new OnClickListener()  
  158.   
  159.        {  
  160.   
  161.               @Override  
  162.   
  163.               public void onClick(View v)  
  164.   
  165.               {  
  166.   
  167.                      Button btn=(Button)v;  
  168.   
  169.                      Intent intent=new Intent();  
  170.   
  171.                      switch (btn.getId())  
  172.   
  173.                      {  
  174.   
  175.                      case R.id.secondBtn:  
  176.   
  177.                             intent.setClass(MainActivity.this, SecondActivity.class);  
  178.   
  179.                             break;  
  180.   
  181.                      case R.id.thirdBtn:  
  182.   
  183.                             intent.setClass(MainActivity.this, ThirdActivity.class);  
  184.   
  185.                             break;  
  186.   
  187.                      }  
  188.   
  189.                      startActivity(intent);  
  190.   
  191.               }  
  192.   
  193.                 
  194.   
  195.        };  
  196.   
  197.          
  198.   
  199. }


 

package com.szy.activity;  
  1.   
  2.    
  3.   
  4. import android.app.Activity;  
  5.   
  6. import android.os.Bundle;  
  7.   
  8. import android.util.Log;  
  9.   
  10.    
  11.   
  12. public class SecondActivity extends Activity {  
  13.   
  14.     private static final String TAG = "MainActivity";  
  15.   
  16.    
  17.   
  18.     @Override  
  19.   
  20.     public void onCreate(Bundle savedInstanceState) {  
  21.   
  22.         super.onCreate(savedInstanceState);  
  23.   
  24.         setContentView(R.layout.second);  
  25.   
  26.         Log.i(TAG, "SecondActivity-->onCreate");  
  27.   
  28.        }  
  29.   
  30.    
  31.   
  32.        @Override  
  33.   
  34.        protected void onDestroy()  
  35.   
  36.        {  
  37.   
  38.               super.onDestroy();  
  39.   
  40.               Log.i(TAG, "SecondActivity-->onDestroy");  
  41.   
  42.        }  
  43.   
  44.    
  45.   
  46.        @Override  
  47.   
  48.        protected void onPause()  
  49.   
  50.        {  
  51.   
  52.               super.onPause();  
  53.   
  54.               Log.i(TAG, "SecondActivity-->onPause");  
  55.   
  56.        }  
  57.   
  58.    
  59.   
  60.        @Override  
  61.   
  62.        protected void onRestart()  
  63.   
  64.        {  
  65.   
  66.               super.onRestart();  
  67.   
  68.               Log.i(TAG, "SecondActivity-->onRestart");  
  69.   
  70.        }  
  71.   
  72.    
  73.   
  74.        @Override  
  75.   
  76.        protected void onResume()  
  77.   
  78.        {  
  79.   
  80.               super.onResume();  
  81.   
  82.               Log.i(TAG, "SecondActivity-->onResume");  
  83.   
  84.        }  
  85.   
  86.    
  87.   
  88.        @Override  
  89.   
  90.        protected void onStart()  
  91.   
  92.        {  
  93.   
  94.               super.onStart();  
  95.   
  96.               Log.i(TAG, "SecondActivity-->onStart");  
  97.   
  98.        }  
  99.   
  100.    
  101.   
  102.        @Override  
  103.   
  104.        protected void onStop()  
  105.   
  106.        {  
  107.   
  108.               super.onStop();  
  109.   
  110.               Log.i(TAG, "SecondActivity-->onStop");  
  111.   
  112.        }  
  113.   
  114. }  
package com.szy.activity;  
  1.   
  2.    
  3.   
  4. import android.app.Activity;  
  5.   
  6. import android.os.Bundle;  
  7.   
  8. import android.util.Log;  
  9.   
  10.    
  11.   
  12. public class ThirdActivity extends Activity  
  13.   
  14. {  
  15.   
  16.        private static final String TAG = "MainActivity";  
  17.   
  18.    
  19.   
  20.        @Override  
  21.   
  22.        public void onCreate(Bundle savedInstanceState)  
  23.   
  24.        {  
  25.   
  26.               super.onCreate(savedInstanceState);  
  27.   
  28.               setContentView(R.layout.third);  
  29.   
  30.               Log.i(TAG, "ThirdActivity-->onCreate");  
  31.   
  32.        }  
  33.   
  34.    
  35.   
  36.        @Override  
  37.   
  38.        protected void onDestroy()  
  39.   
  40.        {  
  41.   
  42.               super.onDestroy();  
  43.   
  44.               Log.i(TAG, "ThirdActivity-->onDestroy");  
  45.   
  46.        }  
  47.   
  48.    
  49.   
  50.        @Override  
  51.   
  52.        protected void onPause()  
  53.   
  54.        {  
  55.   
  56.               super.onPause();  
  57.   
  58.               Log.i(TAG, "ThirdActivity-->onPause");  
  59.   
  60.        }  
  61.   
  62.    
  63.   
  64.        @Override  
  65.   
  66.        protected void onRestart()  
  67.   
  68.        {  
  69.   
  70.               super.onRestart();  
  71.   
  72.               Log.i(TAG, "ThirdActivity-->onRestart");  
  73.   
  74.        }  
  75.   
  76.    
  77.   
  78.        @Override  
  79.   
  80.        protected void onResume()  
  81.   
  82.        {  
  83.   
  84.               super.onResume();  
  85.   
  86.               Log.i(TAG, "ThirdActivity-->onResume");  
  87.   
  88.        }  
  89.   
  90.    
  91.   
  92.        @Override  
  93.   
  94.        protected void onStart()  
  95.   
  96.        {  
  97.   
  98.               super.onStart();  
  99.   
  100.               Log.i(TAG, "ThirdActivity-->onStart");  
  101.   
  102.        }  
  103.   
  104.    
  105.   
  106.        @Override  
  107.   
  108.        protected void onStop()  
  109.   
  110.        {  
  111.   
  112.               super.onStop();  
  113.   
  114.               Log.i(TAG, "ThirdActivity-->onStop");  
  115.   
  116.        }  
  117.   
  118. }  

 

原文引用http://blog.csdn.net/jiahui524/article/details/6786578

posted on 2012-11-14 15:29  Summ3r  阅读(2480)  评论(0编辑  收藏  举报