Activity任務和返回棧

2021-10-01 07:49:27 字數 1789 閱讀 8421

1,介紹:

任務是指在執行特定作業時與使用者互動的一系列 activity。 這些 activity 按照各自的開啟順序排列在堆疊(即返回棧)中

任務棧的作用是用來維護activity,開啟乙個activity 進棧,關閉乙個activity叫出棧

一般情況乙個應用程式對應乙個任務棧我們操作的activity永遠是棧頂的activity.應用程式退出了  實際上是任務棧清空了

堆疊中的 activity 永遠不會重新排列,僅推入和彈出堆疊

2,乙個應用開啟後任務棧的狀態:

3,開啟不同應用後任務棧的狀態。

兩個任務:任務 b 在前台接收使用者互動,而任務 a 則在後台等待恢復。

4,乙個應用的activity 啟動另乙個activity 時任務棧的狀態:

當前 activity 啟動另乙個 activity 時,該新 activity 會被推送到堆疊頂部,成為焦點所在。 前乙個 activity 仍保留在堆疊中,但是處於停止狀態。activity 停止時,系統會保持其使用者介面的當前狀態。 使用者按「返回」按鈕時,當前 activity 會從堆疊頂部彈出(activity 被銷毀),而前乙個 activity 恢復執行(恢復其 ui 的前一狀態)。 堆疊中的 activity 永遠不會重新排列,僅推入和彈出堆疊:由當前 activity 啟動時推入堆疊;使用者使用「返回」按鈕退出時彈出堆疊。 因此,返回棧以「後進先出」物件結構執行。 圖 1 通過時間線顯示 activity 之間的進度以及每個時間點的當前返回棧,直觀呈現了這種行為。

圖 . 顯示任務中的每個新 activity 如何向返回棧新增專案。 使用者按「返回」按鈕時,當前 activity 隨即被銷毀,而前乙個 activity 恢復執行。

5,乙個應用的任務棧中可能會存放多個相同activity的例項:

由於返回棧中的 activity 永遠不會重新排列,因此如果應用允許使用者從多個 activity 中啟動特定 activity,則會建立該 activity 的新例項並推入堆疊中(而不是將 activity 的任一先前例項置於頂部)。 因此,應用中的乙個 activity 可能會多次例項化(即使 activity 來自不同的任務),如圖 3 所示。因此,如果使用者使用「返回」按鈕向後導航,則會按 activity 每個例項的開啟順序顯示這些例項(每個例項的 ui 狀態各不相同)。 但是,如果您不希望 activity 多次例項化,則可修改此行為。 具體操作方法將在後面的管理任務部分中討論。

乙個 activity 將多次例項化。

6,activity 和任務的預設行為總結如下:

當 activity a 啟動 activity b 時,activity a 將會停止,但系統會保留其狀態(例如,滾動位置和已輸入表單中的文字)。如果使用者在處於 activity b 時按「返回」按鈕,則 activity a 將恢復其狀態,繼續執行。

使用者通過按「主頁」按鈕離開任務時,當前 activity 將停止且其任務會進入後台。 系統將保留任務中每個 activity 的狀態。如果使用者稍後通過選擇開始任務的啟動器圖示來恢復任務,則任務將出現在前台並恢復執行堆疊頂部的 activity。

如果使用者按「返回」按鈕,則當前 activity 會從堆疊彈出並被銷毀。 堆疊中的前乙個 activity 恢復執行。銷毀 activity 時,系統不會保留該 activity 的狀態。

即使來自其他任務,activity 也可以多次例項化。

任務和返回棧

一 設定activity啟動模式 1 使用manifest檔案 standard singletop singletask singleinstance android allowtaskreparenting false true android alwaysretaintaskstate fal...

任務和返回棧

應用通常包含多個 activity 每個 activity 均應圍繞使用者可以執行的特定操作設計,並且能夠啟動其他 activity。例如,電子郵件應用可能有乙個 activity 顯示新郵件的列表。使用者選擇某郵件時,會開啟乙個新 activity 以檢視該郵件。乙個 activity 甚至可以啟...

activity的任務棧

當activity被建立出來的時候,系統就分給他乙個任務棧,task stack.用於存放activity.任務棧是用來描述activity當前的狀態.內部實現是乙個鍊錶.後進先出.複雜的任務棧.假設任務棧有browseractiviity.webkit.避免出現太多的activity.節約記憶體,...