现在 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 上查了各种资源造成的问题,进行了集装箱处理,,需求想要做个浏览器,刚刚开始我不断来回点击,崩溃我不要不要的。
整篇我就没解释了,效果呢比以前好了很多,因为好多我知道 却说不出来,还有一些我找谷歌的时候看文章觉得有用,就贴上去了。写的不怎么样 勿怪,