activity的四種加載模式

 

在android裏,有4種activity的啓動模式,分別爲: standard, singleTop, singleTask和singleInstance, 其中standard和singleTop相似, singleTask和singleInstance相似, 用法以下:android

(1).standard和singleTopspa

這兩種加載模式下, 同一個task中能夠存在一個activity的多個實例, 而且能夠位於activity棧的任意位置it

 

先舉個例子:程序

假設目標task的activity棧爲: A->B->C->D(棧底->棧頂)方法

在程序中調用startActivity(D) activity

若是D是standard模式, 則activity棧變爲:vi

A->B->C->D->D, 也就是會從新建立一個D實例co

若是D是singleTop模式, 則activity棧變爲background

A->B->C->D, 不會建立D實例, 就是說若是D在目標task 的activity棧的棧頂, 則不會建立新的實例, 而是調用D的onNewIntent()方法, 反之若是D不在目標task 的activity棧的棧頂, 則會從新建立一個D實例實例

 

(2). singleTask和singleInstance

這兩種加載模式下, 同一個task中只會存在一個activity的實例, 若是經過startActivity()啓動,則調用onNewIntent()方法, 而不是建立一個新的實例。這兩種模式下, activity實例均位於activity棧的棧底。

 

這兩種加載模式的區別:

假設一個Activity的實例A 採用以下兩種加載模式:

singleTask:

   若是A調用startActivity(B)啓動B實例, 則A和B位於同一個task中。

singleInstance:

   若是A調用startActivity(B)啓動B實例, 則系統會自動給intent添加一個屬性FLAG_ACTIVITY_NEW_TASK, 將B實例放入到一個新的task中, 也就是說A實例所在的task中只能有A本身, 不能存在其餘實例

相關文章
相關標籤/搜索