1. 程式人生 > >Activity橫豎屏切換時先看到橫屏/豎屏再變換回豎屏/橫屏

Activity橫豎屏切換時先看到橫屏/豎屏再變換回豎屏/橫屏

因為公司APP上的一個Bug遇到一個問題,跟了下這個問題,稍微記錄一下。

需求:當App從後臺回到前臺的時候,要彈出一個廣告頁Activity A ,而廣告頁希望是豎屏顯示的,這樣才符合引人入勝的效果咯。

開發的實現:做這個需求,之前開發的實現是,在Application中註冊Application.ActivityLifecycleCallbacks來監聽Activity的變化情況,根據Activity的變化情況來判斷是否從後臺變化到前臺。一些邏輯性的判斷這邊不寫了,我們就看問題的程式碼部分虛擬碼

問題發生點:
當一個Activity B(橫屏)成功地退到後臺,後面再進入APP時,
onActivityResumed 回撥中,已經做好判斷,認為從後臺跑到前臺了,緊接著通過EventBus傳送事件去開啟Activity A(廣告頁,豎屏)
我們會看到廣告頁先顯示成了橫屏(和Activity B一致),再變換成豎屏(自己的屬性)

問題猜測:Android系統底層在這邊發生了什麼轉換,導致了顯示的異常。(暫不知)

那解決的方案:
1.退一步,top activity是橫屏的話,不彈出廣告頁(我想找一個APP是橫屏下,彈出廣告頁的,都沒找到,猜想是否都不會這樣設計)
2.延遲250ms左右startActivity (時間不容易確定,我覺得跟Activity B的顯示有關係),但是這種方案的弊端在於會看到一眼Activity B
3.在退出橫屏Activity B到後臺的時候,將它切換成豎屏
4.修改廣告頁的實現方案