fragment+webview+橫豎屏切換問題排查

問題首現(xiàn)

若只想知道如何解決問題,請直接到問題解決。

因文件預(yù)覽需要橫屏顯示,并且文件預(yù)覽采用的是webview加載html的方式,并且webview又封裝了一層fragment,所以橫豎屏切換的主要問題變成了 fragment+wenview 實(shí)現(xiàn)橫豎屏切換。

一開始按照網(wǎng)上的大部分說法實(shí)現(xiàn),每次橫豎屏切換的時(shí)候,不重新啟動(dòng)activity的生命周期,只需要監(jiān)測 onConfigurationChanged 方法即可。多次測試發(fā)現(xiàn),activity的生命周期沒有重新走,但每次都要多次實(shí)例化fragment,導(dǎo)致了多次快速橫豎屏之后,界面卡頓嚴(yán)重的問題。

此次主要是如何解決fragment為何會(huì)多次實(shí)例化的問題。

問題排查測試

多次百度搜索測試無果,同事提醒,可能跟側(cè)滑關(guān)閉的背景有關(guān),于是嘗試了將側(cè)滑關(guān)閉功能關(guān)閉,無效,在側(cè)滑關(guān)閉加上白色背景,依然無效,設(shè)置全局白色背景,有效了?。?!

這才意識(shí)到可能跟background有關(guān),查看了下代碼,發(fā)現(xiàn)在style里面全局設(shè)置了背景為透明,不可能把全局的背景都改成白色,太影響性能了哇。

于是,新寫了個(gè)style,加了個(gè)白色背景,最初采用的方式是,在加載預(yù)覽界面的activity中,采用Java的方式添加style,測試下來,居然無效,瞬間懵逼了,難道單個(gè)添加無效么?不信邪了,這次直接在manifest-activity中添加了style,成功了?。?!

問題解決

適用場景:

FragmentA 中 加載 WebView,ActivityA 中加載多個(gè) FragmentA,ActivityA 打開 ActivityB,ActivityB 中加載 FragmentA,且 ActivityA 不進(jìn)行橫豎屏切換,ActivityB 支持橫豎屏切換。

bug現(xiàn)象:

ActivityB 橫豎屏切換的時(shí)候,頁面加載卡頓,且多次實(shí)例化 FragmentA。

解決方案:

在 manifest 中找到 ActivityB,并添加 theme,style 中設(shè)置 背景色為白色。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容