話說Android 基礎好使很重要的,今天看下Android的Activity四大啓動模式~
Android採用任務棧(Task)的方式來管理Activity的實例。當啓動一個應用時,Android就會爲之創建一個任務棧。啓動模式簡單地說就是Activity啓動時的策略,在AndroidManifest.xml中的標籤的android:launchMode屬性設置。啓動模式有4種,分別爲standard、singleTop、singleTask、singleInstance;
講解啓動模式之前,有必要先講解一下“任務棧”的概念。
一、Android下的任務棧
Android系統中的任務棧,類似於一個容器。用於管理所有的Activity實例。在存放Activity時,滿足“先進後出(First-In/Last-out)”的原則。先加入任務棧中的Activity會處於容器下面,後加入的處於容器上面,而從任務棧中取出Activity是從最頂端取出,最後取出的是最低端Activi圖:
先出棧的將會是Activity1,但是是Activity1先入棧的
二:Activity的4中啓動模式
1、standard模式:
standard是Activity默認的啓動模式,在不指定Activity啓動模式的情況下,所有Activity使用的都是standard模式。
在standard模式下,每當啓動一個新的Activity,它就會進入任務棧,並處於棧頂的位置,對於使用standard模式的Activity,每次啓動都會創建一個新的實例。
適用於大多數應用場景。
每啓動一次項目都會新建一個Acxtivity,若按返回鍵則會返回三次,Activity將會按順序出棧。如下圖:
2、singleTop模式:
singleTop模式與standard模式相似,不同的是,當啓動的Activity已經位於棧頂時,則直接使用它不創建新的實例。
解決一個用戶體驗的問題,避免已經打開的頁面重複打開多次。
3、singleTask模式:
當Activity的啓動模式指定爲singleTask,每次啓動該Activity時,系統首先會檢查棧中是否存在該Activity的實例,如果發現已經存在則直接使用該實例,並將當前Activity之上的所有Activity出棧,如果沒有發現則創建一個新的實例。
4、singleInstance模式:
singleInstance模式加載Activity時,只會創建一個Activity實例,並且會使用一個全新的任務棧來裝載Activity實例。
特點是在整個手機裏只有一個實例存在。
如果要啓動的Activity不存在,系統會先創建一個新的任務棧,在創建該Activity的實例,並把該Activity加入棧頂。如果要啓動的Activity已經存在,無論位於哪個應用程序或者哪個任務棧中,系統都會把該Activity所有的任務棧轉到前臺,從而使該Activity顯示出來。如下圖:
希望大家能夠喜歡~~~點贊喲~~