Activity的四種載入模式

2022-09-22 21:18:20 字數 1964 閱讀 5932

activity之間的跳轉,或者說載入乙個新的activity,一般對於開發者來說,都不是乙個太難的問題。直到後來隨著不斷的深入,才發現原來activity的載入還分為四種不同載入模式。靈活的使用合適的載入模式,可以避免產生大量的重複的activity,從而優化效能,減少系統資源消耗。

四種載入模式具體為:

standard: 標準模式,一呼叫startactivity()方法就會產生乙個新的例項。

singletop: 檢查是否已經存在了乙個例項位於activity stack的頂部,如果存在就不產生新的例項,反之則呼叫activity的newinstance()方法產生乙個新例項。

singletask: 在乙個新的task中產生這個例項,以後每次呼叫都會使用此例項,而避免產生新的例項。

singleinstance: 這個基本上跟singletask一樣,只是有一點不同,那就是在這個模式下的activity例項所處的task中,只能有這乙個activity例項,而不能有其他的例項。

這些啟動模式可以android清單檔案androidmanifest.xml中,通過中的launchmode屬性進行設定,如:

androidmanifest.xml

j**a code

intent intent = new intent(srcactivity.this, targetactivity.class);

intent.addflags(intent.flag_activity_reorder_to_front);

startactivity(intent);

四種載入模式的區別如下:

1.所屬task的區別:

一般情況下,,「standard」和」singletop」兩種載入模式源activity(即new intent(arg0,arg1)中的第乙個引數)和目標activity(即new intent(arg0,arg1)中的第二個引數)在同乙個task內,除非intent包括了引數flag_activity_new_task,如包含了此引數,目標activity會起動到新的task裡;

「singletask」和「singleinstance」 總是把目標activity作為乙個task的根元素,他們不會被啟動到乙個其他task裡。

2.是否允許多個例項的區別:

standard」和」singletop」可以允許有多個例項,並且可以位於不同的task中;

singletop要求如果activity stack頂部已經有目標activity例項,則直接講intent傳送給該例項,而不建立新例項。如activity stack沒有該例項,則建立新例項;

「singletask」和」singleinstance」則只產生乙個例項,並且是task的根元素。「standard」和」singletop」可以被例項化多次,並且是可以存在於不同的task中;這種例項化時乙個task可以包括乙個activity的多個例項;「singletask」和」singleinstance」則限制只生成乙個例項,並且是task的根元素。

3.是否允許其他activity存在於本task內的區別:

「singleinstance」獨佔乙個task,其他activity均不能存在於此task中,如果它啟動乙個新的activity,不管新的activity的launch mode如何,新的activity都將執行於其他task裡;      

另外三種模式則可以和其他activity共存。

4.是否每次都生成新例項的區別:

「standar」模式每次都生成乙個新的activity例項;

「singletop」的activity如果在task的activity stack頂部則不生成新例項,直接使用此例項,否則生成乙個新例項。

「singleeinstance」是其所在task的activity stack裡的唯一activity例項,它每次都會被重用

「singletask」如果在task的activity stack的頂部,則接收intent,否則該intent會被丟棄,但仍然會該task返回前台。

Activity的四種載入模式

activity之間的跳轉,或者說載入乙個新的activity,一般對於開發者來說,都不是乙個太難的問題。activity的載入還分為四種不同載入模式,靈活的使用合適的載入模式,可以避免產生大量的重複的activity,從而優化效能,減少系統資源消耗。四種載入模式具體為 這些啟動模式可以androi...

Activity的四種載入模式

activity有四種載入模式 1 standard 標準 預設 模式 當通過這種模式來啟動activity時,總會為目標activity建立乙個新的例項,並將該activity新增到當前task棧中.注意,這種方式不會啟動新的task,只是將新的activity新增到原有的task 2 singl...

Activity的四種載入模式

standard 標準模式,也是預設模式。每次啟動activity的時候,為目標activity建立新的例項,並將它加入到當前task棧中。single top 棧頂單例模式,如果當前棧頂為要啟動的activity,將不會啟動.single task 如果要啟動的activity不存在,則建立新的a...