Android筆記(八)活動的啟動模式

來源:互聯網
上載者:User

標籤:android   活動   啟動模式   

1.啟動模式一共有四種,分別是standard、singleTop、singleTask 和 singleInstance,可以在AndroidManifest.xml中通過給activity標籤指定android:launchMode 屬性來選擇啟動模式。

2.standard
standard 是活動預設的啟動模式,在不進行顯式指定的情況下,所有活動都會自動使用
這種啟動模式。在 standard 模式下,每當啟動一個新的活動,它就會在返回棧中入棧,並處於棧頂的位置。對於使用standard 模式的活動,系統不會在乎這個活動是否已經在返回棧中存在,每次啟動都會建立該活動的一個新的執行個體。比如現在棧頂的活動是1,你在1的基礎上重新啟動活動1,那麼現在棧中就是兩層活動,第一層是活動1,第二層還是活動1.

3.singleTop
當活動的啟動模式
指定為 singleTop,在啟動活動時如果發現返回棧的棧頂已經是該活動,則認為可以直接使用它,不會再建立新的活動執行個體。不過當活動並未處於棧頂位置時,這時再啟動這個活動,還是會建立新的執行個體的。

4.singleTask
當活動的啟動模式指定為 singleTask,每次啟動該活動時系統首先會在返回棧中檢查是否存在該活動的執行個體,如果發現已經存在則直接使用該執行個體,並把在這個活動之上的所有活動統統出棧,如果沒有發現就會建立一個新的活動執行個體。
在活動1的基礎上啟動活動2,然後在啟動活動1,會發現活動1已經存在於返回棧中,所以活動2會出棧,活動1重新成為棧頂活動。在此期間,活動1執行了onRestart()方法,活動2執行了onDestory()方法。

5.singleInstance
singleInstance 模式啟動的活動會啟用一個新的返回棧來管理這個活動。假設我們的程式中有一個活動是允許其他程式調用的,如果我們想實現其他程式和我們的程式可以共用這個活動的執行個體,應該如何?呢?使用前面三種啟動模式肯定是做不到的,因為每個應用程式都會有自己的返回棧,同一個活動在不同的返回棧中入棧時必然是建立了新的執行個體。而使用singleInstance 模式就可以解決這個問題,在這種模式下會有一個單獨的返回棧來管理這個活動,不管是哪個應用程式來訪問這個活動,都共用的同一個返回棧,也就解決了共用活動執行個體的問題。
例如,我們現在依次啟動了活動1,活動2,活動3,而活動2的啟動模式是singleInstance,那麼現在活動1和活動3是在同一個返回棧中的,而活動2則是在另一個返回棧,並且這個棧中只有這一個活動。

現在,手機顯示的是活動3,我們按下Back鍵,手機顯示的就是活動1,在按下Back鍵,手機會顯示活動2,再次按下Back鍵,才會退出程式。
因為只有當一個返回棧空了,才會顯示另一個返回棧的棧頂活動。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Android筆記(八)活動的啟動模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.