Android 任務和回退堆疊 處理親緣關係

2021-08-26 17:26:43 字數 1084 閱讀 7306

親緣關係是指activity願意屬於哪個任務。預設,來自同乙個應用程式的所有的activity彼此有乙個親緣關係。因此,預設情況下在同乙個應用程式中的所有activity都應該屬於同乙個任務。但是,你能夠給乙個activity修改預設的親緣關係。activity被定義在不同的應用程式中能夠共享乙個親緣關係,或者activity被定義在同乙個應用程式中能夠跟不同任務的親緣關係進行關聯。

你能夠使用元素的taskaffinity屬性來修改任意給定的activity的親緣關係。

taskaffinity屬性需要乙個字串值,它必須是在元素中宣告的唯一的預設包名,因為系統要使用這個名字來給應用程式標識預設任務的親緣關係。

親緣關係應用於以下兩個方面:

1.當啟動activity的intent中包含了flag_activity_new_task標識時。

預設情況下,乙個新的activity是在呼叫startactivity()方法的activity的任務中被啟動。它被放到與呼叫者相同的回退堆疊的上面。但是,如果如果傳遞個startactivity()方法的intent包含了flag_activity_new_task標識,系統就會尋找乙個不同的任務來給安放這個新的activity。通常這是乙個新的任務。但是,如果有乙個既存的任務跟這個新的activity有相同的親緣關係,它就不會啟動乙個新的任務,而是在這個有親緣關係的任務中啟動這個activity。如果沒有,就啟動乙個新的任務。

2.當activity的allowtaskreparenting屬性被設定為「true」時

在這種場景中,這個activity能從啟動它的任務中轉移到跟它有親緣關係的任務中,這種轉移發生在跟它有親緣關係的任務顯示在前台的時候。

例如,假設乙個報告選擇城市的天氣條件的activity被定義成乙個旅遊應用程式的一部分,它跟同乙個應用程式中的其他activity有著相同的起源關係(預設的應用程式親緣關係),並且允許使用re-parenting這個屬性。當應用中的乙個activity啟動了天氣預報的activity,它最初跟你的activity屬於同乙個任務。但是,當這個旅遊應用程式顯示在前台時,這個天氣預報的activity又會被重新關聯到天氣預報的任務,並且在這個任務中顯示。

深入學習android之任務與堆疊

乙個任務其實就是乙個activity的堆疊。也是使用者感知到的 乙個應用 預設情況下,乙個應用程式中的activity傾向於屬於同乙個任務。但是可以通過設定tackaffinity屬性,使不同應用程式的activity享有同乙個affinity,或者同乙個程式的activity有不同的affinit...

斷點指標和任務堆疊指標

斷點資料 把任務被中止執行時的位置叫做斷點,把當時存放在cpu的pc psw和通用暫存器等各暫存器中的資料叫做斷點資料。斷點指標 任務被終止時 在pc暫存器中 cpu的當前程式執行指標。任務堆疊指標 指向任務堆疊棧頂的指標 乙個任務包含 任務控制塊 任務堆疊 任務 ucos進行任務切換時,osctx...

Android事件處理之五 非同步任務

asynctask android的ui執行緒主要負責處理使用者的按鍵事件 使用者觸屏事件及螢幕繪製事件等,因此開發者的其它操作不應該也不能阻塞ui執行緒 為避免ui執行緒失去響應,android建議將耗時操作放在新執行緒中完成,但新執行緒可能需要動態更新ui元件,而新執行緒是不允許直接更新ui元件...