1. 程式人生 > >android中activity的四種載入模式

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 模式,它能有效地改善你的軟體的使用者體驗,讓軟體的操作更加人性化些。額,就至此為此吧。。

http://blog.csdn.net/pcwings/article/details/5895197