1. 程式人生 > >webview的白屏,和硬體加速

webview的白屏,和硬體加速

      Android從3.0(API Level 11)開始,在繪製View的時候支援硬體加速,充分利用GPU的特性,使得繪製更加平滑,但是會多消耗一些記憶體。

      開啟或關閉硬體加速:

      由於硬體加速自身並非完美無缺,所以Android提供選項來開啟或者關閉硬體加速,預設是關閉。可以在4個級別上開啟或者關閉硬體加速:

      Application級別:<applicationandroid:hardwareAccelerated="true" ...>

      Activity級別:<activity android:hardwareAccelerated="false" ...>

      Window級別:

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

      注意:目前為止,Android還不支援在Window級別關閉硬體加速。

      View級別:

myView.setLayerType(View.LAYER_TYPE_HARDWARE, null);

      注意:目前為止,Android還不支援在View級別開啟硬體加速。

      檢測當前是否啟用了硬體加速

// 方法一
// 此方法返回true,如果myView掛在一個開啟了硬體加速的Window之下,
// 也就是說,它在繪製的時候不一定使用了硬體加速,getDrawingCache
myView.isHardwareAccelerated();
                        
// 方法二
// 返回true,如果canvas在繪製的時候啟用了硬體加速
// 儘量採用此方法來判斷是否開啟了硬體加速
canvas.isHardwareAccelerated();

      理解View的繪製模型:

1.沒有硬體加速:invalidate the view hierarchy ------> draw the view hierarchy

      2.有硬體加速:invalidate the view hierarchy ------> record and update the display list ------> draw the display list

      硬體加速的限制:

目前,Android對硬體加速的支援並非完美,有些繪製操作在開啟硬體加速的情況下不能正常工作(具體的列表可以參考Android開發者文件)。

      不過Android可以保證內建的元件和應用支援硬體加速。因此,如果應用中只使用了標準UI元件,可以放心開啟硬體加速。

      隨著Android的版本升級,相信一段時間之後,硬體加速可以得到完美的支援。

      開啟硬體加速之後的異常反應:

1.某些UI元素沒有顯示:可能是沒有呼叫invalidate

      2.某些UI元素沒有更新:可能是沒有呼叫invalidate

      3.繪製不正確:可能使用了不支援硬體加速的操作, 需要關閉硬體加速或者繞過該操作

      4.丟擲異常:可能使用了不支援硬體加速的操作, 需要關閉硬體加速或者繞過該操作

相關推薦

webview硬體加速

      Android從3.0(API Level 11)開始,在繪製View的時候支援硬體加速,充分利用GPU的特性,使得繪製更加平滑,但是會多消耗一些記憶體。       開啟或關閉硬體加速:       由於硬體加速自身並非完美無缺,所以Android提供選項來開啟或者關閉硬體加速,預設是關閉。可

WebView第一次載入會求解決方案

程式碼如下,我是從MainActivity點選按鈕跳轉進去這個頁面的,第一次載入時進度條完成後顯示不出來頁面,必須按返回鍵後再次載入才能顯示出來,搞了半天了都不知道什麼原因,求大神幫忙解決啊,煩死了!! public class AnnounceActivity exten

Webview在RecyclerView中開啟硬體加速問題解決

在專案中遇到一個問題:把Webview作為header加在Recyclerview中,開啟硬體加速後,錘子手機閃屏嚴重,其他手機有閃屏,不算嚴重。但是關閉硬體加速網頁會很卡,一直對於硬體加速閃屏問題不知怎麼解決,嘗試直接關閉Webview的硬體加速,但出現白

vue+webpack專案在iOS微信端偶爾出現重新整理又能重新進入的解決方案在Android上不會出現

           問題描述:微信公眾號內部的專案,我使用的是vue+webpack的方式,路徑配置正確的情況下,在Chrome上執行正常,執行npm run build放在測試伺服器上,配置好相應入口,通過微信訪問,在Android機

Android 啟動跳轉黑以及冷啟動優化

一,白屏 現象:啟動app,白屏一段時間後才出現歡迎頁 解決: 1,新增style <style name="AppTheme.Launcher"> <item name="android:windowDisablePreview">true<

小程式問題記憶體研究

在開發小程式應用中,QA發現過幾次頁面白屏的情況,苦於難易復現和除錯,故想對小程式白屏問題進行一番探究。 從小程式官方開發者文件得知,微信小程式執行在三端:iOS(iPhone/iPad)、Android和用於除錯的開發者工具。三端的指令碼執行環境以及用於渲染非原生元件的環境是各不相同的[1]: 在

解決"打包成功後的apk點選程式出現不能進入介面"的問題

(1)去檢查build.properties裡面的entryAppId和entryPage兩項是否和app的appCongig.xml裡面的配置相同.         (2)如果上面兩項配置正確,去打

vue2.0在android5.0 es6轉es5保證瀏覽器相容性

1. 安裝 npm install --save-dev babel-preset-es2015 2. 安裝 npm install --save-dev babel-preset-stage-3 3. 在專案根目錄建立一個.babelrc檔案(ES6轉ES5配置)  裡面內

vue2.0在android5.0 es6轉es5保證瀏覽器兼容性

comment es5 androi tps and art ie8 ports 階段 1. 安裝 npm install --save-dev babel-preset-es2015 2. 安裝 npm install --save-dev babel-preset-st

Android 徹底去除啟動並減少啟動時間

白屏體驗時android體驗的剋星,但是可以解決,廢話少說, 1.在首啟動的引導頁或者廣告頁的activity的style加入以下程式碼 <item name="android:windowN

Android模擬器加速BIOS中VT-x選項不可改Intel硬體加速軟體的安裝

對於解決Android模擬器在Intel平臺的電腦上啟動慢的問題,Intel提供了硬體加速軟體HAXM。 安裝此軟體首先要電腦的硬體支援VT-x技術,安裝中爆出錯誤: 但我的電腦上並沒有網上說的在

解決"打包成功後的ipa點選程式出現不能進入介面"的問題

(1)去檢查build.properties裡面的entryAppId和entryPage兩項是否和app的appCongig.xml裡面的配置相同.         (2)如果上面兩項配置正確,去打

Android-動畫繪製2D繪製硬體加速的不支援問題

前言 好久沒寫部落格了,現在都是一個月才寫一些,也是因為自己沒什麼料,技術仍然有待提高 問題描述 canvas是我們常用的功能,我們經常在canvas畫布上繪製各種自己想要的效果。 今天分享一個自己在呼叫canvas繪製動畫效果的時候遇到的一個問題,

ionic2 --prod編譯打包報錯Duplicate export ‘***NgFactory’問題解決

ionic2 使用--prod引數打包App會讓App啟動會快好多,而且包也會變小。 但是我使用 --prod 打包之後的App一直白屏,App進不去,但是不適用--prod就不會。這個問題困擾了我好久。 後來看log,報錯是 "Uncaught Error: Module

WebView問題

最近在使用WebView的時候,發現了一個小問題,很多初學者應該會注意不到! WebView的layerType屬性有三個值。 1.none,預設值, 2.software,軟體加速, 3.hardware,硬體加速。 當設定為第三個值得時候,在某些手機上WebView

Android view layer type(hardware layer硬體加速的區別)

誤解: 之前混淆了 硬體加速 和 view hardware layer。就奇怪 硬體加速 是API 14後預設的,那為什麼動畫結束時,又要吧layer type設定為none,說這樣可以節省記憶體(video memory) 硬體加速繪製模型(hard

ios端微信小程式web-view頁面安卓正常顯示

今天小程式上線,ios端小程式有的頁面白屏,後來查到的問題是web-view的src中攜帶的引數中含有中文,ios端是不允許連結中有中文的,所以只能給中文轉碼了,h5頁面提取引數的時候再解碼一下就可以了 介紹一下javascript中,轉碼和解碼的兩種方法

app啟動會閃怎麼處理?

我在做一個app應用的時候,發現啟動該應用會出現幾秒的白屏,然後再渲染介面。有以下兩個方面的原因:第一,歡迎頁啟動的時候載入請求的資料量過大,導致歡迎頁在出現之前頁面上有一個短暫的白色閃屏停留。但是我

React Native之使用“Debug JS Remote”時出現跨域問題

啟用“Debug JS Remote”出現白屏,主要原因就是瀏覽器跨域限制,從而導致不能通過瀏覽器進行web除錯的目的。 解決方

Android冷啟動解析帶你一步步分析解決問題

本文同步發表於我的微信公眾號,掃一掃文章底部的二維碼或在微信搜尋 郭霖 即可關注,每天都有文章更新。 寫在前面 記得在本月初,我發表了一篇文章叫《 Android Studio新功能解析,你真的瞭解Instant Run嗎?》,裡面詳細講解了