Android WebView 開發 資源釋放,處理詳解
阿新 • • 發佈:2019-01-31
現在 app 與h5 結合的應用越來越多,這裡我們一般用 WebView 來顯示 但是 問題也挺多的,資源釋放,快取處理,等。
WebView 的基本使用
mWebview = (WebView) findViewById(R.id.webview);
webview.loadUrl("");
</pre>WebView 的WebSettings 基本設定百度基本可以查到,我這裡就貼出下<p></p><p></p><pre name="code" class="html"><span style="white-space:pre"> </span>setting.setAllowFileAccess(true); // 設定可以訪問檔案 setting.setBlockNetworkImage(false); // setting.setDomStorageEnabled(true); setting.setUseWideViewPort(true); setting.setLoadWithOverviewMode(true); // setting.setJavaScriptEnabled(true); setting.setDomStorageEnabled(true); setting.setJavaScriptEnabled(true); setting.setRenderPriority(RenderPriority.HIGH); if (AppUtils.isNetworkAvailable(mContext)) { setting.setCacheMode(WebSettings.LOAD_DEFAULT); // 設定 快取模式 } else { setting.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); // 設定 // 快取模式 } // 開啟 DOM storage API 功能 // 開啟 database storage API 功能 setting.setDatabaseEnabled(true); String cacheDirPath = getFilesDir().getAbsolutePath() + MyConfigurationConstant.APP_WEBVIEW; // String cacheDirPath = // getCacheDir().getAbsolutePath()+Constant.APP_DB_DIRNAME; Log.i(TAG, "cacheDirPath=" + cacheDirPath); setting.setAppCacheMaxSize(1024 * 1024 * 5); // 設定資料庫快取路徑 setting.setDatabasePath(cacheDirPath); // 設定 Application Caches 快取目錄 setting.setAppCachePath(cacheDirPath); // 開啟 Application Caches 功能 setting.setAppCacheEnabled(true);
WebView 的資源釋放,重點
<span style="white-space:pre"> </span>if (Build.VERSION.SDK_INT < 18) { mWebview.clearView(); } else { mWebview.loadUrl("about:blank"); } // 清理Webview快取資料庫 <span style="white-space:pre"> </span>try { <span style="white-space:pre"> </span>context.deleteDatabase("webview.db"); <span style="white-space:pre"> </span>context.deleteDatabase("webviewCache.db"); <span style="white-space:pre"> </span>} catch (Exception e) { <span style="white-space:pre"> </span>e.printStackTrace(); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>// WebView 快取檔案 <span style="white-space:pre"> </span>File appCacheDir = new File(context.getFilesDir().getAbsolutePath() + MyConfigurationConstant.APP_WEBVIEW); <span style="white-space:pre"> </span>Log.e(TAG, "appCacheDir path=" + appCacheDir.getAbsolutePath()); <span style="white-space:pre"> </span>File webviewCacheDir = new File(context.getCacheDir().getAbsolutePath() + "/webviewCache"); <span style="white-space:pre"> </span>Log.e(TAG, "webviewCacheDir path=" + webviewCacheDir.getAbsolutePath()); <span style="white-space:pre"> </span>// 刪除webview 快取目錄 <span style="white-space:pre"> </span>if (webviewCacheDir.exists()) { <span style="white-space:pre"> </span>MyDeleteWebviewCache.deleteFile(webviewCacheDir); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>// 刪除webview 快取 快取目錄 <span style="white-space:pre"> </span>if (appCacheDir.exists()) { <span style="white-space:pre"> </span>MyDeleteWebviewCache.deleteFile(appCacheDir); <span style="white-space:pre"> </span>} progressDialog = null; mWebview.removeJavascriptInterface("loadingJs"); mWebview.freeMemory(); mWebview.clearCache(true); mWebview.clearHistory(); l_layout.removeView(mWebview); mWebview.removeAllViews(); if (mWebview != null) { mWebview.destroy(); mWebview = null; } if (flag == true) { unbindService(connection); flag = false; }
@Override
<span style="white-space:pre"> </span>protected void onStart() {
<span style="white-space:pre"> </span>super.onStart();
<span style="white-space:pre"> </span>mWebview.resumeTimers();
<span style="white-space:pre"> </span>}
</pre><pre name="code" class="html">
@Override
protected void onStop() {
super.onStop();
mWebview.reload();
mWebview.onPause();
try {
mWebview.getClass().getMethod("onPause").invoke(mWebview, (Object[]) null);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
mWebview.pauseTimers();
}
可以評論下,寫的不怎麼樣,只是讓我感覺到存在
好吧, 我在google 上查了各種資源造成的問題,進行了集裝箱處理,,需求想要做個瀏覽器,剛剛開始我不斷來回點選,崩潰我不要不要的。
整篇我就沒解釋了,效果呢比以前好了很多,因為好多我知道 卻說不出來,還有一些我找谷歌的時候看文章覺得有用,就貼上去了。寫的不怎麼樣 勿怪,