日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 )

發布時間:2025/6/17 Android 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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 應用開發】Android 返回堆棧 與 任務


② 任務親和性 ( taskAffinity ) 屬性值 : 該值是軟件包的 包名 , 定義在 AndroidManifest.xml 或 build.gradle 配置文件 中 ;
( 如 : “com.android.example” )

<activity android:name=".MainActivity"android:launchMode="standard"android:taskAffinity="com.android.example"/>

③ 任務親和性 ( taskAffinity ) 設置效果 : 具有相同的 任務親和性 ( taskAffinity ) 屬性的 Activity , 會傾向于放在同一個任務 ( 返回堆棧 ) 中 ;



II . 任務親和性 ( taskAffinity ) 設置



1 . Activity 默認的 任務親和性 ( taskAffinity ) 屬性 : 如果開發者沒有指定該 Activity 的 taskAffinity 屬性 , 那么該值默認就是該應用的包名 ;



2 . 任務親和性的三種情況 :


① 相同應用 , 相同的親和性 ( 默認狀態 ) : 相同的應用會默認其 Activity 具有相同的親和性 , 其屬性值就是 本身應用的 包名 , 默認設置下 , 每個打開的 Activity 界面都放在同一個 任務 ( 返回堆棧 ) 中 ;

② 相同應用 , 不同的親和性 : 如果在同一個應用中 , 為 某個 Activity 設置了不同的親和性 , 那么打開這個 Activity 界面時 , 就會在其它的任務中打開該界面 ;

③ 不同應用 , 相同的親和性 : 如果其它應用 Activity 界面的親和性 屬性就是本應用的包名 , 那么打開該 Activity 界面時 , 該界面就會放入本應用的 返回堆棧中 ;



3 . 注意事項 : 如果要設置 任務親和性 ( taskAffinity ) 屬性 , 該值不能是應用的默認包名 , 只能設置其它的包名 ;

( 即 : 如果設置親和性屬性 , 那么就要設置成不一樣的 , 默認的就不要再顯示的設置一遍了 ; )



III . 任務親和性 ( taskAffinity ) 與 FLAG_ACTIVITY_NEW_TASK 標記



1 . 討論的前提條件 :


① 應用 A : 開發了 應用 A , 其中有界面 Activity A ;

② 應用 B : 開發了 應用 B , 其中有界面 Activity B ( 設置默認的親和性 ) ;



2 . 界面跳轉 ( 目的界面為默認啟動模式 )


在 任務 A 中的 Activity A 調用 startActivity() 方法跳轉界面 Activity B ( standard 默認啟動模式 ) 時 , 新啟動的 Activity B 界面 默認 會放到 任務 A 的返回堆棧 A 中 ;



3 . 界面跳轉 ( 目的界面為 singleTask 啟動模式 )


在 任務 A 中的 Activity A 調用 startActivity() 方法跳轉界面 Activity B ( singleTask 啟動模式 ) 時 , 新啟動的 Activity B 的歸屬 , 即放在哪個 任務中 , 分以下兩種情況 :


① 如果 當前 應用 B 沒有運行 : 那么會創建一個新的 任務 , 將 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 的結果 : 當任務 A 進入了前臺運行 , Activity A 就會轉移到 任務 A 的返回堆棧中 ;



3 . 舉例說明 :


① 應用 A : 開發了 應用 A , 其中有界面 Activity A1 ;

② 應用 B : 開發了 應用 B ;

③ 動作 1 : 在 應用 B 中啟動了 Activity A1 , 此時 Activity A1 是放在 應用 B 的 任務 B 中 , 即 返回堆棧 B ;

④ 動作 2 : 如果此時啟動 應用 A , 即 應用 A 的 任務 A 進入了前臺運行 , 則 處于 任務 B 中的 Activity A1 會轉移到 任務 A 中運行 ;

總結

以上是生活随笔為你收集整理的【Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。