今天在處理一個播放器全屏的bug時妹孙,發(fā)現(xiàn)全屏切換時觸發(fā)了上一個activity的生命周期担租,最終發(fā)現(xiàn)問題在主題的windowIsTranslucent這個屬性上。先看下demo中的效果
log.png
其中A是啟動Activity舵盈,B是有windowIsTranslucent屬性為true的activity剃允,需要注意的點有幾個
1.啟動B后,A的生命周期只走了onPause杆勇,而沒有走onStop
2.在B頁面切換橫屏時贪壳,A的生命周期也同時觸發(fā)了
3.A的生命周期為onStop,onStart,onResume,onPause
我們在學習生命周期的時候,區(qū)分onStop和onPause的調(diào)用時機是蚜退,有一個比較通俗的說說法就是如果B啟動后A完全不可見闰靴,則觸發(fā)onPause及onStop。如果B啟動后A依然可以被被看到钻注,比如啟動了一個DialogActivity蚂且,則只會觸發(fā)onPause。
以此看來加上的windowIsTranslucent=true屬性的activity在處理時可以被當做一個DialogActivity幅恋,不管A是否可以被看到