【Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 )
文章目錄
- I . 任務親和性 ( taskAffinity ) 簡介
- II . 任務親和性 ( taskAffinity ) 設置
- III . 任務親和性 ( taskAffinity ) 與 FLAG_ACTIVITY_NEW_TASK 標記
- IV . 任務親和性 ( taskAffinity ) 與 android:allowTaskReparenting 屬性
I . 任務親和性 ( taskAffinity ) 簡介
任務親和性 ( taskAffinity ) 簡介 :
① 親和性概念 : 任務親和性 ( taskAffinity ) 是 Activity 的屬性 , 用于設置該 Activity 傾向于哪個任務 ;
關于任務的概念參考 : 【Android 應用開發(fā)】Android 返回堆棧 與 任務
② 任務親和性 ( taskAffinity ) 屬性值 : 該值是軟件包的 包名 , 定義在 AndroidManifest.xml 或 build.gradle 配置文件 中 ;
( 如 : “com.android.example” )
③ 任務親和性 ( taskAffinity ) 設置效果 : 具有相同的 任務親和性 ( taskAffinity ) 屬性的 Activity , 會傾向于放在同一個任務 ( 返回堆棧 ) 中 ;
II . 任務親和性 ( taskAffinity ) 設置
1 . Activity 默認的 任務親和性 ( taskAffinity ) 屬性 : 如果開發(fā)者沒有指定該 Activity 的 taskAffinity 屬性 , 那么該值默認就是該應用的包名 ;
2 . 任務親和性的三種情況 :
① 相同應用 , 相同的親和性 ( 默認狀態(tài) ) : 相同的應用會默認其 Activity 具有相同的親和性 , 其屬性值就是 本身應用的 包名 , 默認設置下 , 每個打開的 Activity 界面都放在同一個 任務 ( 返回堆棧 ) 中 ;
② 相同應用 , 不同的親和性 : 如果在同一個應用中 , 為 某個 Activity 設置了不同的親和性 , 那么打開這個 Activity 界面時 , 就會在其它的任務中打開該界面 ;
③ 不同應用 , 相同的親和性 : 如果其它應用 Activity 界面的親和性 屬性就是本應用的包名 , 那么打開該 Activity 界面時 , 該界面就會放入本應用的 返回堆棧中 ;
3 . 注意事項 : 如果要設置 任務親和性 ( taskAffinity ) 屬性 , 該值不能是應用的默認包名 , 只能設置其它的包名 ;
( 即 : 如果設置親和性屬性 , 那么就要設置成不一樣的 , 默認的就不要再顯示的設置一遍了 ; )
III . 任務親和性 ( taskAffinity ) 與 FLAG_ACTIVITY_NEW_TASK 標記
1 . 討論的前提條件 :
① 應用 A : 開發(fā)了 應用 A , 其中有界面 Activity A ;
② 應用 B : 開發(fā)了 應用 B , 其中有界面 Activity B ( 設置默認的親和性 ) ;
2 . 界面跳轉(zhuǎn) ( 目的界面為默認啟動模式 )
在 任務 A 中的 Activity A 調(diào)用 startActivity() 方法跳轉(zhuǎn)界面 Activity B ( standard 默認啟動模式 ) 時 , 新啟動的 Activity B 界面 默認 會放到 任務 A 的返回堆棧 A 中 ;
3 . 界面跳轉(zhuǎn) ( 目的界面為 singleTask 啟動模式 )
在 任務 A 中的 Activity A 調(diào)用 startActivity() 方法跳轉(zhuǎn)界面 Activity B ( singleTask 啟動模式 ) 時 , 新啟動的 Activity B 的歸屬 , 即放在哪個 任務中 , 分以下兩種情況 :
① 如果 當前 應用 B 沒有運行 : 那么會創(chuàng)建一個新的 任務 , 將 Activity B 界面放入該新任務的返回堆棧中 ;
② 如果 當前 應用 B 的 任務 B 處于后臺 : 那么會將 任務 B 激活 到前臺運行 , 并將 Activity B 放入 任務 B 的返回堆棧棧頂 ;
IV . 任務親和性 ( taskAffinity ) 與 android:allowTaskReparenting 屬性
1 . 下面討論 android:allowTaskReparenting 屬性 設置為 true 的情況 :
<activity android:name=".ActivityA"android:launchMode="standard"android:taskAffinity="com.android.exampleA"android:allowTaskReparenting="true"/>2 . android:allowTaskReparenting 屬性作用 :
① 任務 A : 當有一個任務 A , 與 Activity A 有親和性 ;
② 任務 B : 當前 Activity A 處于 任務 B 的返回堆棧中 , Activity A 界面是在 任務 B 中啟動的 ;
③ 設置屬性為 true 的結(jié)果 : 當任務 A 進入了前臺運行 , Activity A 就會轉(zhuǎn)移到 任務 A 的返回堆棧中 ;
3 . 舉例說明 :
① 應用 A : 開發(fā)了 應用 A , 其中有界面 Activity A1 ;
② 應用 B : 開發(fā)了 應用 B ;
③ 動作 1 : 在 應用 B 中啟動了 Activity A1 , 此時 Activity A1 是放在 應用 B 的 任務 B 中 , 即 返回堆棧 B ;
④ 動作 2 : 如果此時啟動 應用 A , 即 應用 A 的 任務 A 進入了前臺運行 , 則 處于 任務 B 中的 Activity A1 會轉(zhuǎn)移到 任務 A 中運行 ;
總結(jié)
以上是生活随笔為你收集整理的【Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C++ 语言】引用 ( 引用简介 |
- 下一篇: 【Android 应用开发】Activi