一、設定activity啟動模式
1、使用manifest檔案:
"standard" | "singletop" |
"singletask" | "singleinstance"]
android:allowtaskreparenting=["false" | "true"]
android:alwaysretaintaskstate=["false" | "true"]
android:cleartaskonlaunch=["false" | "true"]
android:finishontasklaunch=["false" | "true"]
... >
...
「standard」(預設模式)
系統在啟動該activity的任務中建立乙個它的新例項。每個任務中可以有多個它的例項。
「singletop」
在當前任務的棧頂若已有該activity例項,則不建立,而是呼叫其onnewintent()方法。每個任務中可以有多個它的例項,但棧頂只能有乙個。
「singletask」
首次啟動該acitity時,把它放到乙個新的任務中。此後若再啟動就呼叫其onnewintent()方法。整個系統只有乙個它的例項。
「singleinstance」
在」singletask」的基礎上,該activity所在的任務僅有它這個activity。它啟動的其他activity都會在新的任務中開啟。
allowtaskreparenting
如果設為」true」,且該activity已啟動,則當它被其他任務中的activity再次啟動時,系統會把它移動到剛啟動它的任務中。
alwaysretaintaskstate
預設情況下,在某個任務失去使用者焦點一段時間後,系統會保留根activity並清除其他activity。如果任務中的根activity把它設為」true」,則系統會一直保留所有activity(除非系統記憶體不足需要騰地方)。
cleartaskonlaunch
與上乙個相反,如果任務中的根activity把它設為」true」,則當任務失去使用者焦點後,將保留根activity並清除其他activity。
finishontasklaunch
若設為」true」,則當任務失去使用者焦點後,該activity將被銷毀。
2、使用intent標誌:
// 給啟動activity所用的intent新增標誌
intent.addflags(intent.flag_activity_***);
flag_activity_new_task
與上述」singletask」等同。
flag_activity_single_top
與上述」singletop」等同。
flag_activity_clear_top
若任務中已有該activity例項,則清除在其上方的所有activity,恢復該例項並呼叫其onnewintent()方法。
參考資料:
android > develop > api guides > tasks and back stack
備註:
與總覽螢幕(overview screen)相關的內容請參看:
android > develop > api guides > overview screen
任務和返回棧
應用通常包含多個 activity 每個 activity 均應圍繞使用者可以執行的特定操作設計,並且能夠啟動其他 activity。例如,電子郵件應用可能有乙個 activity 顯示新郵件的列表。使用者選擇某郵件時,會開啟乙個新 activity 以檢視該郵件。乙個 activity 甚至可以啟...
Activity任務和返回棧
1,介紹 任務是指在執行特定作業時與使用者互動的一系列 activity。這些 activity 按照各自的開啟順序排列在堆疊 即返回棧 中 任務棧的作用是用來維護activity,開啟乙個activity 進棧,關閉乙個activity叫出棧 一般情況乙個應用程式對應乙個任務棧我們操作的activ...
系統棧和任務棧 freertos
startup stm32h743xx.s中的 stack size equ 0x00000400 heap size equ 0x00000200 即堆疊空間大小 和freertosconfig.h中 define configminimal stack size unsigned short 1...