Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android之Activity的生命周期

android之Activity的生命周期

編輯:關於Android編程

1、Activity簡介:

Activity可以簡單理解為android手機應用程序中的每一個界面,

其有相應的實現Activity類的java類文件(相當於手機界面控制相關邏輯的文件,類似flex頁面的腳本文件,或者常見頁面形式中的js),

也有響應的布局xml文件,預先設置好響應的布局控件及其大小、顏色等屬性,

每一個Activity都需要在AndroidManifest.xml文件中注冊,類似於javaweb中servlet,listener需要在web.xml中注冊一樣。

2、Activity的生命周期圖,如下:


\

簡單幾個階段說明:

1)、比方說打開一個登錄Activity,名為LoginActivity,該LoginActivity會先執行onCreate,onStart,onResume方法,完成登錄界面的初始化。

2)、若用戶點擊返回導航到主菜單,則執行LoginActivity的onPause,OnStop(用戶看不到登錄界面時執行),OnDestory方法<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ICAgICAgICAgIG9uUmVzdGFydNTaz8LD5sq508OwuMD9y7XD96GjPC9wPgo8cD4zoaKwuMD9y7XD96O6PC9wPgo8cD4gICAgvPK96aO619y5ssG9uPa958Pmo6zSu7j21ve958Pmo6zD+86qVGVzdExpZmVDeWNsZUFjdGl2aXR5o6jQ6NTao6mjrNK7uPa147v31ve958Pmyc+1xLC0xaXXqrW9tcTX073nw+ajrMP7zqpUZXN0TGlmZUN5Y2xlQWN0aXZpdHkyo6y0+sLrvLCyvL7WzsS8/sjnz8KjujwvcD4KPHA+VGVzdExpZmVDeWNsZUFjdGl2aXR5LmphdmE8L3A+CjxwPjxwcmUgY2xhc3M9"brush:java;">package com.example.helloworld; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class TestLifeCycleActivity extends Activity { private int i = 1; private Button test_life_cycle_btn1 = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_life_cycle); System.err.println(i + "、" + "TestLifeCycleActivity onCreate"); i++; findView(); test_life_cycle_btn1.setOnClickListener(new OnClickListener() { Intent intent = new Intent(TestLifeCycleActivity.this, TestLifeCycleActivity2.class); @Override public void onClick(View view) { TestLifeCycleActivity.this.startActivity(intent); } }); } private void findView(){ test_life_cycle_btn1 = (Button) findViewById(R.id.test_life_cycle_btn1); } @Override protected void onDestroy() { super.onDestroy(); System.err.println(i + "、" + "TestLifeCycleActivity onDestroy"); i++; } @Override protected void onPause() { super.onPause(); System.err.println(i + "、" + "TestLifeCycleActivity onPause"); i++; } @Override protected void onRestart() { super.onRestart(); System.err.println(i + "、" + "TestLifeCycleActivity onRestart"); i++; } @Override protected void onResume() { super.onResume(); System.err.println(i + "、" + "TestLifeCycleActivity onResume"); i++; } @Override protected void onStart() { super.onStart(); System.err.println(i + "、" + "TestLifeCycleActivity onStart"); i++; } @Override protected void onStop() { super.onStop(); System.err.println(i + "、" + "TestLifeCycleActivity onStop"); i++; } }

TestLifeCycleActivity2 .java

package com.example.helloworld;

import android.app.Activity;
import android.os.Bundle;

public class TestLifeCycleActivity2 extends Activity {

	private int i = 1;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.test_life_cycle2);
		
		System.err.println(i + "、" + "TestLifeCycleActivity2 onCreate");
		i++;
		
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		System.err.println(i + "、" + "TestLifeCycleActivity2 onDestroy");
		i++;
	}

	@Override
	protected void onPause() {
		super.onPause();
		System.err.println(i + "、" + "TestLifeCycleActivity2 onPause");
		i++;
	}

	@Override
	protected void onRestart() {
		super.onRestart();
		System.err.println(i + "、" + "TestLifeCycleActivity2 onRestart");
		i++;
	}

	@Override
	protected void onResume() {
		super.onResume();
		System.err.println(i + "、" + "TestLifeCycleActivity2 onResume");
		i++;
	}

	@Override
	protected void onStart() {
		super.onStart();
		System.err.println(i + "、" + "TestLifeCycleActivity2 onStart");
		i++;
	}

	@Override
	protected void onStop() {
		super.onStop();
		System.err.println(i + "、" + "TestLifeCycleActivity2 onStop");
		i++;
	}

}

TestLifeCycleActivity布局文件,僅有一個按鈕,轉到子界面:



    
	


TestLifeCycleActivity2布局文件如下,無內容:



    
	


在AndroidManifest.xml中注冊主界面與子界面:




    

    
        
            
                

                
            
        
        
        
    



測試過程1——點擊主界面的按鈕,轉到子界面,然後點擊返回導航,回到主界面,各個生命周期的方法執行如下:

05-14 10:54:19.012: W/System.err(1862): 1、TestLifeCycleActivity onCreate
05-14 10:54:19.012: W/System.err(1862): 2、TestLifeCycleActivity onStart
05-14 10:54:19.041: W/System.err(1862): 3、TestLifeCycleActivity onResume     -- 以上三個為主界面的初始化
05-14 10:54:23.481: W/System.err(1862): 4、TestLifeCycleActivity onPause      -- 點擊按鈕後將要轉到子界面,先暫停主界面
05-14 10:54:25.241: W/System.err(1862): 1、TestLifeCycleActivity2 onCreate    
05-14 10:54:25.251: W/System.err(1862): 2、TestLifeCycleActivity2 onStart
05-14 10:54:25.281: W/System.err(1862): 3、TestLifeCycleActivity2 onResume    -- 初始化子界面,此時子界面被渲染,占據屏幕最前端
05-14 10:54:27.551: W/System.err(1862): 5、TestLifeCycleActivity onStop       -- 主界面不可見,執行主界面的stop方法
05-14 10:55:11.742: W/System.err(1862): 4、TestLifeCycleActivity2 onPause     -- 點擊返回導航時,暫停子界面
05-14 10:55:11.802: W/System.err(1862): 6、TestLifeCycleActivity onRestart    -- 執行主界面的restart方法
05-14 10:55:11.802: W/System.err(1862): 7、TestLifeCycleActivity onStart      -- 執行主界面的start方法
05-14 10:55:11.813: W/System.err(1862): 8、TestLifeCycleActivity onResume     -- 執行主界面的onResume方法,重新開始渲染主界面,此時主界面在屏幕最前端
05-14 10:55:13.354: W/System.err(1862): 5、TestLifeCycleActivity2 onStop      -- 子界面不可見,執行子界面onStop方法
05-14 10:55:13.362: W/System.err(1862): 6、TestLifeCycleActivity2 onDestroy   -- 銷毀子界面

測試過程2——點擊主界面的按鈕,將要彈出子界面,此時狂點返回導航,直至退出HelloWorld程序,返回到手機,主界面與子界面各個生命周期的方法執行如下:

05-14 10:56:50.281: W/System.err(1862): 1、TestLifeCycleActivity onCreate
05-14 10:56:50.301: W/System.err(1862): 2、TestLifeCycleActivity onStart
05-14 10:56:50.391: W/System.err(1862): 3、TestLifeCycleActivity onResume     -- 主界面初始化渲染
05-14 10:56:55.331: W/System.err(1862): 4、TestLifeCycleActivity onPause      -- 子界面將要占據手機屏幕,暫停主界面
05-14 10:56:56.411: W/System.err(1862): 1、TestLifeCycleActivity2 onCreate    
05-14 10:56:56.421: W/System.err(1862): 2、TestLifeCycleActivity2 onStart
05-14 10:56:56.441: W/System.err(1862): 3、TestLifeCycleActivity2 onResume   -- 子界面渲染
05-14 10:56:58.051: W/System.err(1862): 4、TestLifeCycleActivity2 onPause    -- 主界面將要占據手機屏幕,暫停子界面
05-14 10:56:58.261: W/System.err(1862): 5、TestLifeCycleActivity onResume    -- 用戶點擊返回導航到主界面,執行主界面OnResume,因為子界面沒有來得及占據手機屏幕,所以主界面此時仍然可見,則不會執行其OnStop方法
05-14 10:56:59.111: W/System.err(1862): 5、TestLifeCycleActivity2 onStop     -- 子界面不可見,執行onStop方法
05-14 10:56:59.111: W/System.err(1862): 6、TestLifeCycleActivity2 onDestroy  -- 銷毀子界面
05-14 10:56:59.521: W/System.err(1862): 6、TestLifeCycleActivity onPause     -- 用戶點擊多次返回導航,退回到主界面後,接著退出主界面,到手機桌面,則需暫停主界面
05-14 10:57:04.571: W/System.err(1862): 7、TestLifeCycleActivity onStop      -- 接著主界面不可見,停止主界面
05-14 10:57:04.571: W/System.err(1862): 8、TestLifeCycleActivity onDestroy   -- 接著銷毀主界面



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved