1. 程式人生 > >啟動模式簡單介紹

啟動模式簡單介紹

最近面試經常碰到問這個問題,但總是記不太清楚,現按自己理解記錄下,僅作理解,加深印象,若想知道原理,可以去看各位

大神的講解。

https://blog.csdn.net/primer_programer/article/details/28849527

https://blog.csdn.net/CodeEmperor/article/details/50481726

啟動模式已知兩種設定方式,第一種靜態設定,AndroidManifest裡在Activity配置那裡通過launchMode設定;第二種是動態設定,是Intent那裡設定intent.setflag,動態模式的優先順序大於靜態的,以動態模式為主(貌似設定基本都是以動態設定為主,例如廣播還有xml的屬性什麼的),動態設定的那個帖子找不到了,如有興趣,自己可以搜下。

standard預設的標準模式,任務棧裡的例項後進先出,也就是後面建立的先退出,可以重複建立,也可以自己建立自己。

singleTop,棧頂複用,如果在棧頂就不建立新的例項,否則建立。如QQ,微信,新聞一次推送多條資訊,點進去只會看到一個,不會重複建立例項,貌似是走onNewIntent

singleTask,棧內複用,任務棧裡有此例項,就不建立,其他在此上面的例項全部退出棧就行。類似於應用的主介面,不會重複建立,再看到的時候。例如對應用首頁新增此模式,無論進入多少次其他頁面,都會退出其他例項,由onNewIent進入。

如:a介面購物,b介面確認訂單,c介面付款,如果付款成功會跳到a,如果不付款則返回b,這時候重啟a就會用到singleTask,b介面會直接退出掉。

sinleInstance,介紹是建立新的任務棧裡只用當前一個例項,並讓多個應用共享該例項。我粗淺的理解成單獨且唯一的存在於一個任務棧,類似於鬧鐘響鈴介面和打電話介面,這個都是不會重複建立的,且其他應用都可以開啟並共享這個介面一樣的資料。小知識點,若AC在一個任務棧,B為singleInstace在另一個任務棧,啟動順序A->B(singleInstace)->C,退出的時候會先退出同一任務棧的,這裡為C->A->B,先退出本棧的所有例項,才會退出新棧的例項。

(題外話,前兩天開始用抖音,發現右滑進入釋出人介面,然後再看他其他作品,重複這個操作發現退出特麻煩,這就是用了預設機制,但我也不確定要用Top還是Task,我渣感覺兩種都可以用。)

以上是我從大神那看到按自己理解記錄的,如有錯誤或侵權,請幫忙指出,謝謝。