Activity的四種載入模式

2021-06-02 19:50:59 字數 1636 閱讀 6290

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

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

另外也可以在**中通過一些標誌進行設定。如:

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

intent.addflags(intent.flag_activity_reorder_to_front);

startactivity(intent);

四種載入模式的區別如下:
一、  所屬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裡。

二、 是否允許多個例項的區別:

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

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

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

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

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

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

四、 是否每次都生成新例項的區別:

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

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

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

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

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...

Activity的四種載入模式

正如前面介紹activity配置時提到的,配置activity時可指定android launchmode屬性,該屬性用於配置該activity的載入模式。該屬性支援如下 4個屬性值。standard 標準模式,這是預設的載入模式。singletop task棧頂單例模式。singletask ta...