先前在[Android]四大元件簡介中有簡單介紹過,Activity在應用程式中是負責與使用者交互的部分。
一個Activity代表了應用程式中的一個頁面。
關於Activity
Android開發團隊為了方便開發者能夠快速開發畫面,因此在Activity中設計了許多生命週期,
Activity從生成、活動中、停止活動到銷毀,都有對應的生命週期來做相對應的事件處理。
在簡單介紹前,這裡不免俗的先放一張Activity的生命週期流程圖:

生命週期簡介
onCreate() & onDestroy()
onCreate()是Activity剛啟動時的第一個callback,通常我們會在這裡進行一些初始化的動作,例如:
setContentView(R.layout.activity_main);
或是TextView text1 = (TextView) findViewById(R.id.textView1);
等等。
onDestroy()則是當Activity被結束掉時,會被呼叫的callback。
註:onCreate()和onDestroy()這兩個方法只會在Activity被建立或是被銷毀時才會呼叫。
onStart() & onStop()
當onCreate()已經執行完畢,且使用者已經看到畫面時,會呼叫onStart()。
當使用者啟動其他Activity時,原本的Activity則會呼叫onStop()。
onPause() & onResume()
當Activity的畫面有部分被遮住時,例如有一個Dialog元件蓋在上方時,會呼叫onPause()。
當Dialog關閉,並回到這個Activity時,則會呼叫onResume()。
Activity的啟動模式
簡介
應用程式在執行時,Activity會以堆疊的形式放入Task中,通常一個應用程式只會有一個Task。
而應用程式裡的Activities則會透過啟動模式來影響Activity在Task的堆疊中進出的方式。
具體而言,Activity具有四種啟動模式,分別是:
- standard 一般預設的啟動模式。每次啟動Activity時都會新建一個實例。
- singleTop 如果Activity在Task的堆疊中已經被啟動,那麼就直接呼叫這個Activity,反之則新建一個實例,並把這個Activity放到Task堆疊的最上層。
- singleTask 如果要啟動的Activity已經存在於某個Task中,則會透過onNewIntent()方法直接啟動該Activity。而且會結束掉該Activity上層所有的Activity,使目前呼叫的Activity處於最上層。
- singleInstance 啟動Activity時,會建立新的Task。並且該Task中只會執行該Activity。
修改啟動模式的方式
在android_manifest.xml中,對activity標籤中加入android:launchMode參數即可,例如:
<activity
android:name=".MainActivity"
android:launchMode="singleTask" />
2019補充:詳細介紹可以參考IT幫幫忙的Android – Activity 啟動模式一文