Android應用組件Activity是Android程序的呈現(xiàn)層,顯示可視化的用戶界面,并接收與用戶交互所產(chǎn)生的界面事件。對于一個Android應用程序來說,可以包含一個或多個Activity,一般在程序啟動后會呈現(xiàn)一個Activity,用于提示用戶程序已經(jīng)正常啟動。當它不積極運行時,Activity可以被操作系統(tǒng)終止以節(jié)省內(nèi)存。
在Android常用組件生命周期一文中我們簡單介紹過Activity生命周期,Activity生命周期指Activity從啟動到銷毀的過程。Activity表現(xiàn)為4種狀態(tài),分別是活動狀態(tài)、暫停狀態(tài)、停止狀態(tài)和非活動狀態(tài)。
● 活動狀態(tài),Activity在用戶界面中處于上層,完全能被用戶看到,能夠與用戶進行交互。
● 暫停狀態(tài),Activity在界面上被部分遮擋,該Activity不再處于用戶界面的上層,且不能夠與用戶進行交互;或者屏幕被鎖定。
● 停止狀態(tài),Activity在界面上完全不能被用戶看到,也就是說這個Activity被其他Activity全部遮擋。
● 非活動狀態(tài),不在以上3種狀態(tài)中的Activity則處于非活動狀態(tài)。
這四種狀態(tài)是可以相互轉(zhuǎn)換的,轉(zhuǎn)換關(guān)系圖如圖1-1所示。

圖1-1 Activity的4種狀態(tài)的轉(zhuǎn)換關(guān)系圖
Android調(diào)用以下的事件回調(diào)方法通知Activity從某一狀態(tài)轉(zhuǎn)變到另一狀態(tài)。
代碼清單1-1 事件的回調(diào)方法
public class MyActivity extends Activity {
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}

圖1-2 Activity活動周期
表1-1對各個事件回調(diào)方法做出說明。
表1-1 Activity生命周期的事件回調(diào)方法
方法 |
是否可終止 |
說明 |
onCreate() |
否 |
Activity啟動后第一個被調(diào)用的方法,常用來進行Activity的初始化,例如創(chuàng)建View、綁定數(shù)據(jù)或恢復信息等 |
onStart() |
否 |
當Activity顯示在屏幕上時,該方法被調(diào)用 |
onRestart() |
否 |
當Activity從停止狀態(tài)進入活動狀態(tài)前,調(diào)用該方法 |
onResume() |
否 |
當Activity能夠與用戶交互,接收用戶輸入時,該方法被調(diào)用。此時的Activity位于Activity棧的棧頂 |
續(xù)表
方法 |
是否可終止 |
說明 |
onPause() |
是 |
當Activity進入暫停狀態(tài)時,該方法被調(diào)用。一般用來保存持久的數(shù)據(jù)或釋放占用的資源 |
onStop() |
是 |
當Activity進入停止狀態(tài)時,該方法被調(diào)用 |
onDestroy() |
是 |
在Activity被終止前,即進入非活動狀態(tài)前,該方法被調(diào)用 |
onSaveInstanceState() |
否 |
Android系統(tǒng)因資源不足終止Activity前調(diào)用該方法,用以保存Activity的狀態(tài)信息,供onRestoreInstanceState()或onCreate()恢復之用 |
onRestoreInstanceState() |
否 |
恢復onSaveInstanceState()保存的Activity狀態(tài)信息,在onStart()和onResume ()之間被調(diào)用 |
Activity事件回調(diào)方法的調(diào)用順序,如圖1-3所示。

圖1-3 Activity事件回調(diào)方法的調(diào)用順序