1.Android系統中Activity作為Activity棧(Stack)被管理的,大家都知道棧的特點是先進後出,所以當前活動的Activity處於棧頂,之前非活動的Activity被壓入棧底,等待是否可能被恢復為活動狀態。
Android API中所提供的Activity生命周期圖:
650) this.width=650;" height=120>
2.下面的整個Activity生命周期中的所有方法,我們可以根據程序的需要來覆蓋相應的方法:
onCreate(Bundle savedInstanceState):創建activity時調用。設置在該方法中,還以Bundle的形式提供對以前儲存的任何狀態的訪問! onStart():activity變為在屏幕上對用戶可見時調用。 onResume():activity開始與用戶交互時調用(無論是啟動還是重新啟動一個活動,該方法總是被調用的) onPause():activity被暫停或收回cpu和其他資源時調用,該方法用於保存活動狀態的,也是保護現場,壓棧。 onStop():activity被停止並轉為不可見階段及後續的生命周期事件時調用。 onRestart():重新啟動activity時調用。該活動仍在棧中,而不是啟動新的活動 onDestroy():activity被完全從系統內存中移除時調用
- public class Activity extends ApplicationContext {
- //創建的時候調用
- protected void onCreate(Bundle savedInstanceState);
- //啟動的時候調用
- protected void onStart();
- //重新啟動的時候調用
- protected void onRestart();
- //恢復的時候調用
- protected void onResume();
- //暫停的時候調用
- protected void onPause();
- //停止的時候調用
- protected void onStop();
- //銷毀的時候調用
- protected void onDestroy();
- }
3.下面通過實例來測試Activity的生命周期中各個方法的調用情況,將Activity的所有方法都覆蓋,主要用Log打印輸出信息,並通過日志(LogCat)方式來觀察運行結果。Log.v(String tag, String msg); //Verbose
Log.d(String tag, String msg); //Debug
Log.i(String tag, String msg); //Info
Log.w(String tag, String msg); //Warning
Log.e(String tag, String msg); //Error
tag類似標簽,可以是任意字符串,通常可以使用類名+方法名, 主要是用來在查看日志時提供一個篩選條件。
下面的實例是測試Activity的生命周期中各個方法的調用情況:
MainActivity.java
- package com.android.TestAvtivity.activity;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class MainActivity extends Activity {
- private Button btn;
- private static final String TAG="MainActivity";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //輸出日志
- Log.i(TAG, "MainActivity onCreate--->");
- btn = (Button)findViewById(R.id.Button1);
- btn.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- //結束當前的Activity
- MainActivity.this.finish();
- }
- });
- }
- @Override
- //啟動
- protected void onStart() {
- super.onStart();
- //輸出日志信息
- Log.i(TAG, "MainActivity onStart--->");
- }
- @Override
- //重啟
- protected void onRestart() {
- super.onRestart();
- //輸出日志信息
- Log.i(TAG, "MainActivity onRestart--->");
- }
- @Override
- //恢復
- protected void onResume() {
- super.onResume();
- //輸出日志信息
- Log.i(TAG, "MainActivity onResume--->");
- }
- @Override
- //暫停
- protected void onPause() {
- super.onPause();
- //輸出日志信息
- Log.i(TAG, "MainActivity onPause--->");
- }
- @Override
- //停止
- protected void onStop() {
- super.onStop();
- //輸出日志信息
- Log.i(TAG, "MainActivity onStop--->");
- }
- @Override
- //銷毀
- protected void onDestroy() {
- super.onDestroy();
- //輸出日志信息
- Log.i(TAG, "MainActivity onDestroy--->");
- }
- }