Activity生命週期(2)—事件回調函數調用順序

  • 徹底生命週期 onCreate() — onDestroy() :從Activity的生命週期創建到銷燬的所有過程
  • 但是生命週期 onStart() — onStop():Activity在界面上從可見到不可見的過程
  • 活動生命週期 onResume — onPause() :Activity在屏幕最上層,並能與用戶進行交互

示例程序

1.程序代碼java

(經過在生命週期函數中添加「日誌點」的方法進行調試)android

package com.jhincheung.activitylifecycle;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
	private static String TAG = "LIFECYCLE";
	
	/*
	 * 徹底聲明週期開始時被調用,初始化Activity
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Log.i(TAG,"(1)onCreate()");
		
		//定義按鈕和按鈕監聽函數,經過用戶點擊按鈕調用finish()函數結束程序
		Button button =(Button)findViewById(R.id.btn_finish);
		button.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View view) {
				finish();
			}
		});
	}
	
	/*
	 * 可視生命週期開始時被調用,對用戶界面進行必要的更改
	 */
	@Override
	public void onStart() {
		super.onStart();
		Log.i(TAG, "(2)onStart()");
	};
	
	/*
	 * 在onStart()後被調用,用於恢復onSaveInstanceState()保存的用戶界面信息
	 */
	@Override
	public void onRestoreInstanceState(Bundle savedInstanceState) {
		super.onRestoreInstanceState(savedInstanceState);
		Log.i(TAG, "(3)onRestoreInstanceState()");
	};
	
	
	/*
	 * 在活動週期開始時被調用,恢復被onPause()中止的用於界面更新的資源
	 */
	@Override
	protected void onResume() {
		super.onResume();
		Log.i(TAG, "(4)onResume()");
	}
	
	/*
	 * 在onPause後被調用,保存界面的臨時信息
	 */
	@Override
	protected void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);
		Log.i(TAG, "(5)onSaveInstanceState()");
	}
	
	/*
	 * 在從新進入可視生命週期前被調用,載入界面所須要的更改信息
	 */
	@Override
	protected void onRestart() {
		super.onRestart();
		Log.i(TAG, "(6)onRestart()");
	}
	
	/*
	 * 在活動生命週期結束時被調用,用來保存持久的數據或釋放佔用的資源
	 */
	@Override
	protected void onPause() {
		super.onPause();
		Log.i(TAG, "(7)onPause()");
	}
	
	/*
	 * 在可視化生命週期結束時被調用,用來釋放佔用的資源
	 */
	@Override
	protected void onStop() {
		super.onStop();
		Log.i(TAG, "(8)onStop()");
	}
	
	/*
	 * 在徹底生命週期結束時被調用,釋放資源,包括線程、數據鏈接等
	 */
	@Override
	protected void onDestroy() {
		super.onDestroy();
		Log.i(TAG, "(9)onDestory()");
	}
	
}

2.程序界面app

3.調用順序ide

(1)徹底生命週期函數

啓動ActivityLifeCycle — 點擊」結束程序「按鈕關閉程序spa

調用順序:onCreate — onStart —onResume — onPause — onStop  — onDestroy線程

(2)可視生命週期調試

啓動ActivityLifeCycle — 啓動撥號程序 — 返回ActivityLifeCycle日誌

調用順序:code

  • 啓動:(1)—(2)—(4)
  • Activity被覆蓋:(7)—(5)—(8)
  • 從新顯示Activity:(6)—(2)—(4)
相關文章
相關標籤/搜索