Activity的啟動模式

2022-08-10 00:57:14 字數 2106 閱讀 3032

activity

有四種啟動模式,分別為

standard

,singletop

,singletask

,singleinstance

。如果要使用這四種啟動模式,必須在

manifest

檔案中標籤中的

launchmode

屬性中配置,如

standard

標準啟動模式,也是

activity

的預設啟動模式。在這種模式下啟動的

activity

可以被多次例項化,即在同乙個任務中可以存在多個

activity

的例項,每個例項都會處理乙個

intent

物件。如果

activity a

的啟動模式為

standard

,並且a

已經啟動,在

a中再次啟動

activity a

,即呼叫

startactivity

(new intent

(this

,a.class

)),會在

a的上面再次啟動乙個

a的例項,即當前的桟中的狀態為a–

>a

singletop

如果乙個以

singletop

模式啟動的

activity

的例項已經存在於任務桟的桟頂,那麼再啟動這個

activity

時,不會建立新的例項,而是重用位於棧頂的那個例項,並且會呼叫該例項的

onnewintent()

方法將intent

物件傳遞到這個例項中。舉例來說,如果

a的啟動模式為

singletop

,並且a

的乙個例項已經存在於棧頂中,那麼再呼叫

startactivity

(new intent

(this

,a.class

))啟動

a時,不會再次建立

a的例項,而是重用原來的例項,並且呼叫原來例項的

onnewintent()

方法。這是任務桟中還是這有乙個

a的例項。

如果以singletop

模式啟動的

activity

的乙個例項已經存在與任務桟中,但是不在桟頂,那麼它的行為和

standard

模式相同,也會建立多個例項。

各**方法**的順序:執行→

onpause()

→onnewintent()

→onresume()

singletask

谷歌的官方文件上稱,如果乙個

activity

的啟動模式為

singletask

,那麼系統總會在乙個新任務的最底部(

root

)啟動這個

activity

,並且被這個

activity

啟動的其他

activity

會和該activity

同時存在於這個新任務中。如果系統中已經存在這樣的乙個

activity

則會重用這個例項,並且呼叫他的

onnewintent()

方法。即,這樣的乙個

activity

在系統中只會存在乙個例項。

其實官方文件中的這種說法並不準確,啟動模式為

singletask

的activity

並不會總是開啟乙個新的任務。

singleinstance

總是在新的任務中開啟,並且這個新的任務中有且只有這乙個例項,也就是說被該例項啟動的其他

activity

會自動執行於另乙個任務中。當再次啟動該

activity

的例項時,會重用已存在的任務和例項。並且會呼叫這個例項的

onnewintent()

方法,將

intent

例項傳遞到該例項中。和

singletask

相同,同一時刻在系統中只會存在乙個這樣的

activity

例項。

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...