技術學習記錄

[Android]四大元件之Activity

先前在[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 啟動模式一文

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *