1. 程式人生 > >android 系統基礎知識

android 系統基礎知識

一、Activity 啟動模式

Activity有四種啟動模式:standard、singleTop、singleTask、singleInstance。可以在AndroidManifest.xml中activity標籤的屬性android:launchMode中設定該activity的載入模式。
standard模式:預設的模式,以這種模式載入時,每當啟動一個新的活動,必定會構造一個新的Activity例項放到返回棧(目標task)的棧頂,不管這個Activity是否已經存在於返回棧中;
singleTop模式:如果一個以singleTop模式啟動的activity的例項已經存在於返回桟的桟頂,那麼再啟動這個Activity時,不會建立新的例項,而是重用位於棧頂的那個例項,並且會呼叫該例項的onNewIntent()方法將Intent物件傳遞到這個例項中;
注:如果以singleTop模式啟動的activity的一個例項已經存在於返回桟中,但是不在桟頂,那麼它的行為和standard模式相同,也會建立多個例項;


singleTask模式:這種模式下,每次啟動一個activity時,系統首先會在返回棧中檢查是否存在該活動的例項,如果存在,則直接使用該例項,並把這個活動之上的所有活動統統清除;如果沒有發現就會建立一個新的活動例項;
singleInstance模式:總是在新的任務中開啟,並且這個新的任務中有且只有這一個例項,也就是說被該例項啟動的其他activity會自動運行於另一個任務中。當再次啟動該activity的例項時,會重新呼叫已存在的任務和例項。並且會呼叫這個例項的onNewIntent()方法,將Intent例項傳遞到該例項中。和singleTask相同,同一時刻在系統中只會存在一個這樣的Activity例項。(singleInstance即單例項)
注:前面三種模式中,每個應用程式都有自己的返回棧,同一個活動在不同的返回棧中入棧時,必然是建立了新的例項。而使用singleInstance模式可以解決這個問題,在這種模式下會有一個單獨的返回棧來管理這個活動,不管是哪一個應用程式來訪問這個活動,都公用同一個返回棧,也就解決了共享活動例項的問題。(此時可以實現任務之間的切換,而不是單獨某個棧中的例項切換)

二、Intent

Intent由以下各個組成部分:
component(元件):目的元件
action(動作):用來表現意圖的行動
category(類別):用來表現動作的類別
data(資料):表示與動作要操縱的資料
type(資料型別):對於data範例的描寫
extras(擴充套件資訊):擴充套件資訊
Flags(標誌位):期望這個意圖的執行模式