Android——活動的啟動模式

來源:互聯網
上載者:User

標籤:另一個   學習   入棧   特性   一個   自己   top   chm   解決   

活動的啟動模式分為:standard、singleTop、singleTask、singleInstance四種。

standard模式

是活動預設的啟動模式,是在學習活動跳轉時最先接觸的模式。這個啟動模式無視棧頂的活動,在實現Intent跳轉後就會建立一個新的活動(即使是同一個活動)。例如:

Intent intent=new Intent(FirstActivity.this, FirstActivity.class);

startActivity(intent);

當你在FirstActivity點擊觸發跳轉時,將會有一個新的FirstActivity被建立。持續點擊觸發跳轉則會在返回棧中持續堆疊FirstActivity活動。

singleTop模式

修改上一個案例中的AndroidManifest.xml中FirstActivity的啟動模式,添加:android:launchMode=”singleTop”。再次運行,你點擊觸發跳轉時將會發現,FirstActivity活動不會再被建立,因為此時FirstActivity已經位於返回棧的棧頂。這就是singleTop啟動模式的特點:當你想要啟動的活動位於目前返回棧的頂部時,將不會重新建立新的活動,而是使用棧頂的活動,因此FirstActivity也只會有一個執行個體。不過如果你想啟動的活動不位於目前返回棧的頂部的話,還是與standard模式相同,建立一個新的執行個體,所以這也是singletop的一個問題,singleTask的出現就可以解決這個問題。

singleTask模式

當活動的啟動模式指定為singleTask時,每次啟動該活動時系統首先會在返回棧中檢查是否存在該活動的執行個體。如果存在,則直接使用該執行個體。由於棧後進先出的特性,假如該活動的上面還存在其他執行個體,在使用該活動的時候會讓該活動上的其他活動統統出棧。如果不存在,那麼就建立一個新的活動執行個體。

singleInstance模式

singleInstance是這四種啟動模式中最特殊也最複雜的一個模式。singleInstance適用於那些其他程式調用這個程式活動的情況。因為每個程式都有自己的返回棧,同一個活動在不同的返回棧中入棧事必然會建立新的執行個體,使用singleInstance模式就會有一個單獨的返回棧來管理這個活動,無論哪個程式來使用,都會共用同一個返回棧,解決了多程式共用的問題。例如,目前有A、B、C三個活動,其中B活動的啟動模式為singleInstance,A、C為預設的standard模式。活動的跳轉流程為A->B->C。當你完成從A到C的跳轉後,在C介面按下Back鍵,會發現C返回到了A,再點擊Back鍵,A返回到了B。這就說明,A與C在同一個返回棧中,A入棧後,C進入同一個棧。而B進入了另一個棧。所以C返回到了A,然後在A介面點擊Back時,因為此時A所在的棧已空,所以就顯示另一個棧的棧頂——也就是B所在的棧,於是B顯示出來。此時再點擊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.