1、常規的四個啟動模式:standard,singletop,singletask,singleinstance
2、通過intent.setflag()方式同樣可以達到設定啟動模式的效果
當乙個activity起到的作用只是乙個中轉作用,並不需要留下什麼痕跡(例如儲存在任務棧中),如果不做處理,當系統因系統資源不足而**了activity時,某些系統會把整個任務棧中的所有的activity重新拉起一遍,從而造成了重走一遍中轉activity流程的問題。
為了解決這問題,思路是在跳轉到別的activity時把中轉activity從任務棧裡面移除或者一開始就不儲存,所以有兩種方法:
1、在androidmanifest中,中轉activity節點中加入excludefromrecents="true"設定activity不在「最近任務列表中」出現 和 taskaffinity="***.***.***"設定親和力,即歸屬於那個任務棧。要注意的是,如果有另外的activity與這個中轉activity設定同乙個taskaffinity,也會有excludefromrecents的效果
2、在中轉activity跳轉到目標activity的intent中加一行intent.setflag(intent.flag_activity_new_task | intent.flag_activity_clear_task),這一行的作用是檢測目標任務棧中是否有目標activity,如果有則把task清空,然後在task加入乙個新建的activity;如果沒有則新建乙個task並新建乙個目標activity加入task中。
首次發帖,如有錯漏,歡迎指正交流,不喜勿噴,謝謝!
activity 啟動模式
在android的中activity 有4種啟動方式 standard singletop singletask singleinstance 下面就分輕重點講講這些啟動方式。1 standard啟動方式 這種方式也是系統預設的。說的簡單點,我們在使用startactivity 方法的時候,系統就會...
activity啟動模式
1 對於使用standard 模式的活動,系統不會在乎這個活動是否已經在返回棧中存在,每次啟動都會建立該活動的乙個新的例項。例如a啟動a,a再接著啟動a,a繼續啟動a,然後再分別出棧,如圖所示 2 當活動的啟動模式指定為 singletop,在啟動活動時如果發現返回棧的棧頂已經是該活動,則認為可以直...
Activity啟動模式
兩種方式可以定義activity啟動模式 manifest intent intent定義的啟動模式優先於manifest 不管activity執行在乙個新的任務還是與啟動它的activity同樣的任務,返回鍵總是把使用者帶到之前的activity。然而,如果啟動乙個singletask的activ...