android Flag啟動模式
一、taskAffinity屬性?
這個 taskAffinity表示一個任務,這個任務就是當前activity所在的任務
二、優先順序
如果一個activity在清單檔案設定了launchemode,這時候startactivity啟動該activity,並且設定了intent的啟動flag,這個時候系統優先選擇flag。
二、flag啟動模式
1、FLAG_ACTIVITY_NEW_TASK
重點掌握
注:應用廣泛
例如:開啟別的應用
1.1概念:通常,這個標誌會啟用一個新的Task。然而,並不是必須是。如果已經存在一個Task與新Activity的affinity相同,這個Activity就會加入到那個Task中。如果不是,啟動一個新的Task。
1.2特點:系統預設所有的activity的taskaffinity屬性值都相同
2、FLAG_ACTIVITY_CLEAR_TOP(同一個應用)
重點掌握
注:應用廣泛
例如:做返回、動態更新ui顯示
2.1 場景:Activity A, Activity B, Activity C和Activity D在同一個應用中.
2.2 操作:Activity A啟動開僻Task堆疊(堆疊狀態: A), 在Activity A
中啟動Activity B(堆疊狀態: AB), 在ActivityB中啟動Activity C(堆疊狀態: ABC),在ActivityC中啟動ActivityD(堆疊狀態: ABCD), 在ActivityD中啟動Activity B,啟動Activity B的Intent的Flag設定為FLAG_ACTIVITY_CLEAR_TOP, (堆疊狀態: AB).
3、FLAG_ACTIVITY_BROUGHT_TO_FRONT(帶到前面--不同的應用)
注:基本上不怎麼使用 當一個activity設定了singleTask,那麼系統會預設的給我們的intent設定
當前這個flag
3.1場景: Activity A在名稱為"TaskOne應用"的應用中, Activity C和
Activity D在名稱為"TaskTwo應用"的應用中.
3.2操作:在Launcher中單擊"TaskOne應用"圖示, Activity A啟動開僻Task堆疊,命名為TaskA(TaskA堆疊狀態: A),在Activity A中啟動Activity C,啟動Activity C的Intent的Flag設為FLAG_ACTIVITY_NEW_TASK,Android系統會為Activity C開僻一個新的Task,命名為TaskB(TaskB堆疊狀態: C), 在ActivityC中啟動Activity D(TaskB的堆疊狀態: CD),長按Home鍵,選擇TaskA,Activity A回到前臺,在Activity A中再次啟動Activity C,在啟動Activity C的Intent中設定Flag為FLAG_ACTIVITY_BROUGHT_TO_FRONT,TaskB回到前臺,Activity C顯示, (TaskB的堆疊狀態: C).
4、FLAG_ACTIVITY_MULTIPLE_TASK:(多個)
注:很少使用
與FLAG_ACTIVITY_NEW_TASK結合使用,首先在Intent中設定
FLAG_ACTIVITY_NEW_TASK,開啟Activity,則啟動一個新Task,接著在Intent中設定FLAG_ACTIVITY_MULTIPLE_TASK,再次開啟同一個Activity,則還會新啟動一個Task.
5、 FLAG_ACTIVITY_SINGLE_TOP:
重點掌握
注:應用廣泛
例如:QQ訊息介面
概念:如果當前棧頂的activity就是要啟動的activity,則不會再啟動一個新的activity
6、FLAG_ACTIVITY_RESET_TASK_IF_NEEDED:
一般與FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET結合使用,如果設定該屬性,這個activity將在一個新的task中啟動或者或者被帶到一個已經存在的task的頂部,這時這個activity將會作為這個task的首個頁面載入。將會導致與這個應用具有相同親和力的task處於一個合適的狀態(移動activity到這個task或者從中移出),或者簡單的重置這個task到它的初始狀態
7、FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET:
在當前的Task堆疊中設定一個還原點,當帶有FLAG_ACTIVITY_RESET_TASK_IF_NEEDED的Intent請求啟動這個堆疊時(典型的例子是使用者從桌面再次啟動這個應用),還原點之上包括這個應用將會被清除。應用場景:在email程式中預覽圖片時,會啟動圖片觀覽的actvity,當使用者離開email處理其他事情,然後下次再次從home進入email時,我們呈現給使用者的應該是上次email的會話,而不是圖片觀覽,這樣才不會給使用者造成困惑。
例:存在ActivityA, Activity B, Activity C, Activity A啟動開僻Task堆疊,
命名為TaskA(TaskA堆疊狀態: A),在ActivityA中啟動ActivityB(TaskA 堆疊狀態: AB),接著Activity B啟動Activity C(TaskA堆疊狀態: ABC),啟動Activity C的Intent中設定FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET標題,這樣TaskA中有一個還原點,當有包FLAG_ACTIVITY_RESET_TASK_IF_NEEDED的Intent請求TaskA堆疊時(比如請求ActivityA)系統就會將還原點以上的Activity清除, TaskA堆疊中只剩下了AB.
8、FLAG_ACTIVITY_NO_ANIMATION:
重點掌握
注:自己配置的動畫不會被遮蔽
例如:不想要系統預設啟動
如果給Intent物件設定了這個標記,那麼將會阻止系統在Activity間切換的動畫變換。
9、FALG_ACTIVITY_NO_HISTORY:
注:偶爾使用
例如:1、提交介面(當我們提交成功之後,我們需要調轉到新的介面)
2、當我們的activity沒有往下執行的操作(末級activity)
如果給Intent物件設定了這個標記,那麼新的Activity將不會被保留在歷史堆疊中
10、FLAG_ACTIVITY_NO_USER_ACTION:
重點掌握
注:比較常用
特性:用來控制onUserLeavehint是否被呼叫
場景:比如我們的通話撥號、鬧鐘程式
可以在onUserLeavehint方法中傳送廣播,關閉通知欄上的通知
如果給Intent物件設定了這個標記,在新啟動到前臺的Activity被掛起之前,它會阻止
普通的onUserLeaveHint()方法的回撥。如:電話撥號或鬧鐘程式就要使用這個標記來啟動Activity。
11、FLAG_ACTIVITY_PREVIOUS_IS_TOP:
注:很少使用(幾乎不怎麼使用)
如果給Intent物件設定了這個標記,並且這個Intent物件被用於從一個既存的Activity中啟動一個新的Activity,這個Activity不能用於接受傳送給頂層Activity的新的Intent物件,通常認為使用這個標記啟動的Activity會被自己立即終止。
12、FLAG_ACTIVITY_REORDER_TO_FRONT:
重點掌握
注:如果我們這個activity設定了該flag,那麼將會導致歷史堆疊中如果存在這個activity,這個時候就會被帶到前臺
場景
如果給Intent物件設定了這個標記,那麼將會導致任務歷史堆疊中既存的Activity被帶到前臺。
13、FLAG_ACTIVITY_TASK_ON_HOME:
把當前新啟動的任務置於Home任務之上,也就是按back鍵從這個任務返回的時候會回到home,即使這個不是他 們最後看見的activity
注意這個標記必須和FLAG_ACTIVITY_NEW_TASK一起使用。
整理自教程
相關文章
- Android啟動模式Android模式
- Android四種啟動模式Android模式
- Android的啟動模式(上)Android模式
- [Android]Android Activity 啟動模式詳解Android模式
- Android-Activity的啟動模式Android模式
- Android Activity啟動模式全面解析Android模式
- 理解Android的四種啟動模式Android模式
- android 啟動模式應用場景Android模式
- Android Activity 啟動模式的功能驗證Android模式
- Android Intent Flag組合使用AndroidIntent
- 擼擼Android的羊毛(一)----Activity啟動模式Android模式
- Android基礎知識:Service(3)啟動模式Android模式
- Android學習筆記-Activity的啟動模式Android筆記模式
- Android中的Activity四種啟動模式(launchMode)Android模式
- Android啟動模式及Intent屬性----重新認識Android(5)Android模式Intent
- Android Activity的四大啟動模式詳解Android模式
- Activity啟動模式模式
- 幾張圖讓你明白Android四大啟動模式Android模式
- Android中Activity的啟動模式(LaunchMode)和使用場景Android模式
- Android Activity的生命週期和啟動模式詳解Android模式
- android Activity的啟動模式 作用簡析+demo詳解Android模式
- activity的啟動模式模式
- flag
- Android面試官裝逼失敗之:Activity的啟動模式Android面試模式
- Android 圖文教學讓你徹底理解activity啟動模式Android模式
- Activity啟動模式(GIF 動態演示)模式
- 完全理解android Activity啟動模式LauchMode (深入Activity與任務棧)Android模式
- activity四種啟動模式模式
- android intent.FLAG_ACTIVITY_NEW_TASK 不新建tastAndroidIntentAST
- FlutterEngin啟動流程&androidFlutterAndroid
- Android LocationManagerService啟動(一)Android
- Android開發藝術(1)——Activity的生命週期和啟動模式Android模式
- Android系統啟動自動開啟mtklogAndroid
- Android效能優化之啟動過程(冷啟動和熱啟動)Android優化
- 玩轉SVN-啟動模式模式
- HDFS啟動過程+安全模式模式
- Activity的啟動模式詳解模式
- ORACLE啟動模式及關閉Oracle模式