AndroidWebView的销毁和无法加载天猫网页的问题
2016-12-01 10:37
495 查看
将WebView彻底销毁的问题
在写一个VideoView播放视频时,发现跳转到webView播放完h5加载的video标签的视频后finish再跳转回来,VideoView再播放视频时会出现此视频无法播放,而且我以前加载的动画也会很卡,所以我怀疑是webView还占内存的原因,所以我决定销毁WebView,但是尝试了很多方法。方法一: 设置setting的缓存及WebView再finish时清除缓存及本地文件,但是没用。
private static final String APP_CACAHE_DIRNAME = "/webcache";
//设置webView缓存功能 public void setCache(WebSettings settings){ settings.setCacheMode(WebSettings.LOAD_NO_CACHE); //设置 缓存模式 // 开启 DOM storage API 功能 settings.setDomStorageEnabled(true); //开启 database storage API 功能 settings.setDatabaseEnabled(true); String cacheDirPath = getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME; // String cacheDirPath = getCacheDir().getAbsolutePath()+Constant.APP_DB_DIRNAME; //设置数据库缓存路径 settings.setDatabasePath(cacheDirPath); //设置 Application Caches 缓存目录 settings.setAppCachePath(cacheDirPath); //开启 Application Caches 功能 settings.setAppCacheEnabled(true); }
/** * 清除WebView缓存 */ public void clearWebViewCache(){ //清理Webview缓存数据库 try { deleteDatabase("webview.db"); deleteDatabase("webviewCache.db"); } catch (Exception e) { e.printStackTrace(); } //WebView 缓存文件 File appCacheDir = new File(getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME); File webviewCacheDir = new File(getCacheDir().getAbsolutePath()+"/webviewCache"); //删除webview 缓存目录 if(webviewCacheDir.exists()){ deleteFile(webviewCacheDir); } //删除webview 缓存 缓存目录 if(appCacheDir.exists()){ deleteFile(appCacheDir); } } /** * 递归删除 文件/文件夹 * * @param file */ public void deleteFile(File file) { if (file.exists()) { if (file.isFile()) { file.delete(); } else if (file.isDirectory()) { File files[] = file.listFiles(); for (int i = 0; i < files.length; i++) { deleteFile(files[i]); } } file.delete(); } else { Log.e("WebView", "delete file no exists " + file.getAbsolutePath()); } }
重写finish()方法清除
@Override public void finish() { clearWebViewCache(); super.finish(); }
方法二 :还是重写finish(),在里面清除cookie和session,然后webview=null,还是没用
//清除cookie CookieManager.getInstance().removeAllCookie(); CookieManager.getInstance().removeSessionCookie();
方法三:在Activity的布局中加入一个FrameLayout布局,然后将WebView动态加载进去,然后重写onDestroy(),再将FrameLayout里的View全部移除,上面的代码我也重写到onDestroy()中
@Override
protected void onDestroy() {
//清除WebView缓存
clearWebViewCache();
//清除cookie CookieManager.getInstance().removeAllCookie(); CookieManager.getInstance().removeSessionCookie();
//fm_webview指FrameLayout
fm_webview.removeView(questWvQuest);
//questWvQuest指webView
questWvQuest.destroy();
questWvQuest=null;
super.onDestroy();
}
这里还有一位大牛的博客,大家可以参考一下,说不定有帮助http://blog.csdn.net/qq_16318981/article/details/45362399
WebVIew无法加载天猫网页的问题
只要需要重写这个方法就行,但是一定要注意,不要重写shouldOverrideUrlLoading();这个方法questWvQuest.setWebViewClient(new WebViewClient() { @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { WebResourceResponse response = super.shouldInterceptRequest(view, url); if(url != null && url.contains(INJECTION_TOKEN)) { String assetPath = url.substring(url.indexOf(INJECTION_TOKEN) + INJECTION_TOKEN.length(), url. af06 length()); try { response = new WebResourceResponse( "application/javascript", "UTF8", RequestActivity.this.getAssets().open(assetPath) ); } catch (IOException e) { e.printStackTrace(); // Failed to load asset file } } return response; }
相关文章推荐
- Android webview加载https网页时图片无法加载显示问题
- Android开发问题积累 <加载在线Gif><WebView无法加载网页图片>
- Android开发问题积累 <加载在线Gif><WebView无法加载网页图片>
- android webview加载网页按后退键黑屏一下问题的解决方案
- android中webview携带cookie以及webview所加载网页中js调用java方法问题
- Android使用webview加载网页,解决上传文件适配3.0、4.0、5.0手机存在的问题。
- Android webview加载https网页时http图片无法显示
- Android使用WebView加载有声音或视频的网页时,关闭webView时,声音没有关闭的问题
- Android WebView 无法播放视频 加载不出来等问题
- android 使用webview加载网页问题
- android webView 不能上网 无法打开网页的问题
- 升级了xcode7和iOS9 webview出现了无法加载网页的问题
- android webview无法加载网页
- Android中scrollview嵌套webview后导致网页加载成功但无法显示
- android webview无法响应网页js问题
- Android 5.0中使用webView 加载网页不显示图片问题
- android webview 加载重定向页面时点击无法回退,导致重复加载当前页面问题的解决方案
- 奇怪问题:android Webview无法加载百度首页
- Android 5.0中使用webView 加载网页不显示图片问题
- Android中的WebView进行直接加载网页(要注意解决权限问题)