Activity 啟動模式,activity啟動模式
Activity的啟動模式有四種,分別是standard、singleTop、singleTask、singleInstance。 Android是通過回退棧的模式來管理Activity執行個體的。棧是一種先進後出的集合。比如我們開啟一個Activity,當前顯示的就是在棧的最頂端,當使用者點擊後退或者是應用的返回按鈕的時候,此時系統就會將棧頂的Activity出棧,那麼在原來棧頂的下一個Activity就會變成棧頂從而顯示在裝置上。 standard預設模式,可以不用寫配置。在這個模式下,都會預設建立一個新的執行個體。因此,在這種模式下,可以有多個相同的執行個體,也允許多個相同Activity疊加。就是說同一個任務棧中可以有多個Activity存在。 例如:如果ActivityA已經存在了,在這個ActivityA調用它的startActivity()啟動一個新的ActivityA,那麼這是就是有兩個ActivityA了。 singleTop 可以有多個執行個體,但是不允許多個相同Activity疊加。即,如果Activity在棧頂的時候,啟動相同的Activity,不會建立新的執行個體,而是重用這個在棧頂的Activity,並且會調用其onNewIntent方法。 singletop模式,如果新啟動一個新的執行個體,不在棧頂的話會重新建立一個新的執行個體,那麼他的行為就跟standard模式一樣。 singleTask只有一個執行個體。在同一個應用程式中啟動他的時候,若Activity不存在,則會在當前task建立一個新的執行個體,若存在,則會把task中在其之上的其它Activity destory掉並調用它的onNewIntent方法。如果是在別的應用程式中啟動它,則會建立一個task,並在該task中啟動這個Activity,singleTask允許別的Activity與其在一個task中共存,也就是說,如果我在這個singleTask的執行個體中再開啟新的Activity,這個新的Activity還是會在singleTask的執行個體的task中。 singleInstance只有一個執行個體,並且這個執行個體獨立運行在一個task中,這個task有且只有一個執行個體,不允許有別的Activity存在。當再次啟動該Activity的時候,會重用已存在的任務和執行個體。 singletask與singleInstance不同的是,singletask在一個任務中只有一個執行個體,singleinstance在整個系統中只能有一個,singletask在不同的任務中是可以存在多個執行個體的。