最近在梳理我們的《彩龍社區(qū)》APP的過程中,發(fā)現(xiàn)8.0的手機(jī)幾種爆發(fā)了一個很嚴(yán)重的bug:
: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
bugly中的報(bào)錯截圖如下(為保證產(chǎn)品安全,核心代碼結(jié)構(gòu)已經(jīng)隱藏,請見諒):
通過字面意思,簡單的說就是,在啟動頁面的時候,非法的設(shè)置了屏幕方向而導(dǎo)致了這個報(bào)錯,可是,我們并沒有在代碼中設(shè)置任何東西。
然后網(wǎng)上查閱資料,發(fā)現(xiàn)
google出于安全的考慮,對android8.0以后的版本做的處理,當(dāng)一個Activity固定方向并且是透明的,在8.0以后的版本中就會拋出異常。相關(guān)源碼如下:
上面是27的源碼片段,通過上面我們可以看出當(dāng)三個條件同時滿足的時候,系統(tǒng)會拋出”O(jiān)nly fullscreen activities can request orientation”異常。先分別來說說這三個條件都表示什么意思:
ActivityInfo.isFixedOrientation(requestedOrientation) —— 表示判斷當(dāng)前的|Activity是否固定了方向
fullscreen —— 表示Activity是否是透明的或者是否懸浮在Activity上,是透明的或者懸浮在Activity上fullscreen就等于false
appInfo.targetSdkVersion >= O —— 表示版本號大于等于26
當(dāng)以上的三個條件同時滿足的時候,系統(tǒng)框架就會拋出異常。針對第一條和第三條,我們無能為力,所以只能針對性的對第二條進(jìn)行處理和控制。





暫無評論,快來評論吧!