Android 程式設計中,為什麼設定了 Intent FLAG ACTIVITY NEW TASK,兩個 Activity 取出來的任務 ID 還是相同的?

時間 2021-06-03 04:05:42

1樓:audientlin

按照我的理解:

如果設定了Intent.FLAG_ACTIVITY_NEW_TASK,意思就是在新的Task中啟動Activity,那麼問題來了,新的Task是叫什麼呢?所以就會去Manifest中找這個Activity對應的taskAffinity是什麼,如下:

我這裡設定了 android:taskAffinity="task.test" ,所以就會在乙個新的名為 task.test 的Task中啟動Activity。

如果沒有設定taskAffinity,或者設定了和包名一樣,那麼就會把Activity加入到當前的Task中,因為當前的Task的名稱就是包名,而沒有設定taskAffinity的話預設也是包名。

2樓:jianghui zhou

今天剛好有看了下這方面的一些資料,就拿你這個例子來說吧:如果C這個Activity在Manifest.xml中的宣告中新增了Task affinity,並且和B所在棧的affinity不同,系統首先會查詢有沒有和C的棧 affinity相同的棧存在,如有存則將C壓入那個棧,無則會新建乙個屬於C的affinity的棧將其壓入。

如果C的Task affinity預設沒有設定,或者和B所在的棧的affinity相同,和不加FLAG_ACTIVITY_NEW_TASK 標記效果是一樣的。

3樓:張學成

不知道你解決問題沒,要在新的TASK中啟動只設定Intent.FLAG_ACTIVITY_NEW_TASK是不夠的,還要在要在Manifest中新的activity的設定android:taskAffinity="aaa.

aaa" android:allowTaskReparenting="true" 其中「aaa.aaa」是包名,這個包名要和你程式的包名不一樣,這樣才能將activity啟動到新的task中。

為什麼 Android 應用中的 流氓行為 更普遍一些?

Google的宗旨是Don t be evil 不作惡 但是他忘記了人人生來就有Original Sin 原罪 因此Adnroid開源了的後果就是如此,對於個人使用者來說,沒有任何隱私權,蘋果也比較類似。沒有任何攻擊的意思,單純從安全角度來說,我覺得為什麼諾基亞 RIM Moto之前一直固守自己的系...

介面程式設計中,為什麼只用get和post?

齒輪 這些不過是http請求中的method,而且又也不是什麼大問題。有人不想使用method,想用query和body,甚至header表示 Loikc 我覺得rest這種風格不太適合與瀏覽器之類的客戶端通訊,現在有更好的選擇 graphql,既然這麼喜歡形式主義,那現在就應該選個更好更實用,能幫...

python中為什麼定義函式裡面設定的變數不可用?

半個馮博士 上面的朋友已經把根本的問題說清楚了,就是作用域的問題。其實也有別的解決方案 deftest 1 a globalbb a 1 print b def test 2 c c b 2print c test 1 1 2test 2 2 4deffun 1 a b a 1print b b d...