Android webview-tips

1.首先Android4.0+ webview 是默認開啟硬件加速的
WebView.setLayoutParams(new LinearLayout.LayoutParams(100 0, 1));
動態(tài)改變webview大小時终佛,webview會閃爍送朱,據(jù)說是android 3.0+硬件加速導(dǎo)致的問題,通過如下方式可解決:
WebView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);

http://stackoverflow.com/questions/12806094/android-webview-flicker-bug-while-animating-view-on-device

Generally speaking, it seems the problem has to do with a bug when using WebViews
with hardware acceleration enabled on 3.0+ devices. I also tried using the sliding menu library with a WebView
but experienced the same flicker problem. After looking around I found a workaround here:
WebView “flashing” with white background if hardware acceleration is enabled (Android 3.0+)
The workaround uses the following code to set the layer type of the WebView
to software rendering:
webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

This code solved the flicker for me with the drawback of lower performance.

動態(tài)改變webview大小時,webview閃爍的解決辦法

tips 在實際工作中遇到了這樣的幾個問題

  • 問題1: 會有加載H5 鏈接時加載不出來的問題芬位,即出線白頁,而且是某些機型上出現(xiàn)的問題 :我這里主要是設(shè)置了多余的一個屬性
detail_web.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); //http://blog.csdn.net/bjstyle/article/details/45073503 支持內(nèi)容重新布局

這種問題的解決一般是看一下自己的屬性設(shè)置是否有多余的
當然這里我們之前還使用了github上的一個開源庫來解決這個問題:
delight-im / Android-AdvancedWebView

  • 問題2: webview的H5標簽 問題
    因為Android 在4.4時將內(nèi)核從webkit變?yōu)榱薱hromium 所以會有一些兼容性問題巩搏,比如viewport設(shè)為true等册舞。

  • 問題3 : 在新聞類的頁面中為了實現(xiàn)閱讀體驗,或者H5 的懶加載機制蹬挤,必須將webview設(shè)置為 match_parent 缚窿,這樣就會帶來了webview跟listview或者recyleview 或者scrollview等的滑動事件的交互,大部分實現(xiàn)是用它的父布局來切換事件傳遞的焰扳。當然今日頭條做的比較到位直接重寫了webview倦零,這種方式暫時還沒有實現(xiàn)的思路(//todo:記錄下).

  • 問題4: 有些緩存問題,比如webview默認開啟緩存吨悍,但是我們在實際開發(fā)中有一個問題是圖片第二次進入不加載的問題扫茅,最終是在每次進入界面時清掉了緩存,當然這種問題不一定是正確的解決方式育瓜,也很詭異的出現(xiàn)這種問題葫隙。這種解決最好的是為文章詳情頁做離線緩存。

緩存問題
  • 問題5: 這個問題是需要后期更新的躏仇。即文章的緩存機制恋脚,需要寫一定的js代碼存入本地,最近在學(xué)習(xí)前端的知識焰手,等后期更新糟描。(//todo:加入文章詳情頁緩存機制)

  • 問題6:Android WebView開啟硬件加速導(dǎo)致屏幕花屏

硬件加速分為四個級別
Application級別

<application android:hardwareAccelerated="true"...>

<application android:hardwareAccelerated="true"...>

Activity級別

<activity android:hardwareAccelerated="true"...>

<activity android:hardwareAccelerated="true"...>

window級別

getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

View級別

view.setLayerType(View.LAYER_TYPE_HARDWARE, null);

view.setLayerType(View.LAYER_TYPE_HARDWARE, null);

解決方案
那么為了在保證性能的前提下解決前面提到的問題,那么可以采用第四種級別书妻,關(guān)閉webview的硬件加速
4.0以上的系統(tǒng)我們開啟硬件加速后船响,WebView渲染頁面更加快速,拖動也更加順滑。但有個副作用就是见间,當WebView視圖被整體遮住一塊聊闯,然后突然恢復(fù)時(比如使用SlideMenu將WebView從側(cè)邊滑出來時),這個過渡期會出現(xiàn)白塊同時界面閃爍缤剧。解決這個問題的方法是在過渡期前將WebView的硬件加速臨時關(guān)閉馅袁,過渡期后再開啟,代碼如下:if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);}

問題7: webview緩存處理

Android WebView:性能優(yōu)化不得不說的事

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子跟束,更是在濱河造成了極大的恐慌,老刑警劉巖弛针,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異李皇,居然都是意外死亡削茁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門掉房,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茧跋,“玉大人,你說我怎么就攤上這事卓囚●迹” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵哪亿,是天一觀的道長粥烁。 經(jīng)常有香客問我,道長蝇棉,這世上最難降的妖魔是什么讨阻? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮篡殷,結(jié)果婚禮上钝吮,老公的妹妹穿的比我還像新娘。我一直安慰自己板辽,他們只是感情好奇瘦,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著戳气,像睡著了一般链患。 火紅的嫁衣襯著肌膚如雪巧鸭。 梳的紋絲不亂的頭發(fā)上瓶您,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機與錄音,去河邊找鬼呀袱。 笑死贸毕,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的夜赵。 我是一名探鬼主播明棍,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寇僧!你這毒婦竟也來了摊腋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤嘁傀,失蹤者是張志新(化名)和其女友劉穎兴蒸,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體细办,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡橙凳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了笑撞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岛啸。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖茴肥,靈堂內(nèi)的尸體忽然破棺而出坚踩,到底是詐尸還是另有隱情,我是刑警寧澤炉爆,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布堕虹,位于F島的核電站,受9級特大地震影響芬首,放射性物質(zhì)發(fā)生泄漏赴捞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一郁稍、第九天 我趴在偏房一處隱蔽的房頂上張望赦政。 院中可真熱鬧,春花似錦耀怜、人聲如沸恢着。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掰派。三九已至,卻和暖如春左痢,著一層夾襖步出監(jiān)牢的瞬間靡羡,已是汗流浹背系洛。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留略步,地道東北人描扯。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像趟薄,于是被迫代替她去往敵國和親绽诚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容