activity啟動模式

2021-07-16 00:24:18 字數 1057 閱讀 9360

**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模式可以解決這個問題,在這種模式下會有乙個單獨的返回棧來管理這個活動,不管是哪乙個應用程式來訪問這個活動,都公用同乙個返回棧,也就解決了共享活動例項的問題。(此時可以實現任務之間的切換,而不是單獨某個棧中的例項切換)

activity 啟動模式

在android的中activity 有4種啟動方式 standard singletop singletask singleinstance 下面就分輕重點講講這些啟動方式。1 standard啟動方式 這種方式也是系統預設的。說的簡單點,我們在使用startactivity 方法的時候,系統就會...

activity啟動模式

1 對於使用standard 模式的活動,系統不會在乎這個活動是否已經在返回棧中存在,每次啟動都會建立該活動的乙個新的例項。例如a啟動a,a再接著啟動a,a繼續啟動a,然後再分別出棧,如圖所示 2 當活動的啟動模式指定為 singletop,在啟動活動時如果發現返回棧的棧頂已經是該活動,則認為可以直...

Activity啟動模式

兩種方式可以定義activity啟動模式 manifest intent intent定義的啟動模式優先於manifest 不管activity執行在乙個新的任務還是與啟動它的activity同樣的任務,返回鍵總是把使用者帶到之前的activity。然而,如果啟動乙個singletask的activ...