android中activity的四種加載模式

 

一、何爲加載模式


在android的多activity開發中,activity之間的跳轉可能需要有多種方式,有時是普通的生成一個新實例,有時希望跳轉到原來某個activity實例,而不是生成大量的重複的activity。加載模式便是決定以哪種方式啓動一個跳轉到原來某個Activity實例。


二、加載模式有哪些以及如何配置


1、在android裏面,activity有四種加載模式:standard, singleTop, singleTask, singleInstance 。詳細介紹在後面。

 

2、配置方法

直接修改AndroidManifest.xml文件,如要給一個名爲Act1的activity指定其加載模式爲singleTask,只需添加以下語句:

<activity android:name="Act1" android:launchMode="singleTask">

</activity>

 

三、四種加載模式介紹

 

1、standard :系統的默認模式,一次跳轉即會生成一個新的實例。假設有一個activity命名爲Act1,執行語句:

 

      startActivity(new Intent(Act1.this, Act1.class));

後Act1將跳轉到另外一個Act1,也就是現在的棧裏面有 Act1 的兩個實例。按返回鍵後你會發現仍然是在Act1(第一個)裏面。

 

2、singleTop:singleTop 跟standard 模式比較類似。唯一的區別就是,當跳轉的對象是位於棧頂的activity(應該可以理解爲用戶眼前所 看到的activity)時,程序將不會生成一個新的activity實例,而是直接跳到現存於棧頂的那個activity實例。拿上面的例子來說,當Act1 爲 singleTop 模式時,執行跳轉後棧裏面依舊只有一個實例,如果現在按返回鍵程序將直接退出。這個貌似用得比較少。

 

3、singleTask: singleTask模式和後面的singleInstance模式都是隻創建一個實例的。在這種模式下,無論跳轉的對象是不是位於棧頂的activity,程序都不會生成一個新的實例(當然前提是棧裏面已經有這個實例)。我覺得這種模式相當有用。。在以後的多activity開發中, 經常會因爲跳轉的關係導致同個頁面生成多個實例,這個在用戶體驗上始終有點不好,而如果你將對應的activity聲明爲 singleTask 模式,這種問題將不復存在。不過前陣子好像又看過有人說一般不要將除開始頁面的其他頁面設置爲 singleTask 模式。。原因暫時不明,哪位知道的可以請教下。

 

4、singleInstance: 看網上的解釋好像都比較複雜。剛開始也沒怎麼明白這種模式,只知道它用的也不多。後來仔細看了網上的解釋,稍微有些懂了。就按我的理解解釋下。設置爲 singleInstance 模式的 activity 將獨佔一個task(感覺task可以理解爲進程),獨佔一個task的activity與其說是activity,倒不如說是一個應用,這個應用與其他activity是獨立的,它有自己的上下文activity。拿一個例子來說明吧:

現在有以下三個activity: Act1、Act2、Act3,其中Acti2 爲 singleInstance 模式。它們之間的跳轉關係爲: Act1 -- Act2 -- Act3 ,現在在Act3中按下返回鍵,由於Act2位於一個獨立的task中,它不屬於Act3的上下文activity,所以此時將直接返回到Act1。這就是singleInstance模式,不知道解釋清楚了沒。。

 

四、結語

一般的書籍都沒有談過activity的這四種加載模式,但是感覺瞭解一下這方面的知識還是挺有用的,也許在以後的開發中就會用到,特別是對於 singleTask 模式,它能有效地改善你的軟件的用戶體驗,讓軟件的操作更加人性化些。額,就至此爲此吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章