前情提要:
按正常的App開發(fā)設(shè)計,每個App都會有啟動頁(也就是閃屏頁)和首頁(通常叫MainActivity),而這時候首頁的啟動模式大多數(shù)人會在 ==AndroidManifest==設(shè)置 ==android:launchMode="singleTask"==
可是最近入職的新公司做的App沒有啟動頁,只有首頁,而我按照慣例給首頁設(shè)置了singleTask的啟動模式,然后App就"炸"了!
異常描述
這個"炸"不是說App崩潰了,而是當我們啟動App后,不管我們是從首頁跳轉(zhuǎn)到A頁面,或者是從首頁跳轉(zhuǎn)到B頁面再跳轉(zhuǎn)到C頁面,只要我們點擊Home鍵返回桌面,再點擊桌面圖標把App從后臺切回前臺,系統(tǒng)都會幫我們啟動一次首頁,沒錯,就是啟動一次首頁
而基于首頁的launchMode是SingleTask,在重啟首頁之前Activity棧中處于首頁之上的所有Activity都會被全部銷毀,重新回到首頁
(如果對啟動模式不了解的,可以看這篇文章[Android:圖解四種啟動模式 及 實際應(yīng)用場景解說])
沒想到啊,我一直以為是業(yè)務(wù)代碼中有什么地方出問題重新啟動首頁,后來通過斷點排除了所有可能性,最后對比以前做過的軟件,才想到了可能是因為缺少了啟動頁導致的問題。
解決方式
使用singleTask的前提:
- 很多時候是為了保持首頁的唯一性
- 為了從子頁面跳回首頁的之后不必去寫銷毀其他子頁面的代碼
解決方法:
目前只能通過代碼去銷毀其他子頁面后返回首頁了
問題的原因
還不知道為什么啟動頁如果設(shè)置singleTask會出現(xiàn)這種問題,如果有大神知道的話,麻煩指導一下,謝謝!