【发布时间】:2016-09-14 17:54:20
【问题描述】:
我想从本地存储中显示在 webview 页面中,第一次加载页面时看起来不错,但是当我删除 webview 并再次添加它时,它看起来像在图片上(对于 4.4+,在以前的 android 版本上只是黑屏):
webview 每次添加程序(使用应用程序上下文),关闭缓存,cookie,并在销毁时将其删除。
这是我的代码:
mLayout = (LinearLayout) view.findViewById(R.id.linear_main);
mWebView = new WebView(getActivity().getApplicationContext());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setSaveFormData(false);
mWebView.setInitialScale(1);
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.getSettings().setDatabaseEnabled(false);
mWebView.getSettings().setDomStorageEnabled(false);
mWebView.getSettings().setGeolocationEnabled(false);
mWebView.getSettings().setSaveFormData(false);
mWebView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
mWebView.setWebChromeClient(new WebChromeClient());
if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
}
mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
mWebView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);
mLayout.addView(mWebView,0);
/// then display page by call
public void display(String path){
Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
noCacheHeaders.put("Pragma", "no-cache");
noCacheHeaders.put("Cache-Control", "no-cache");
mWebView.loadUrl(path, noCacheHeaders);
}
/// after display destroy fragment with the WebView
@Override
public void onDestroy() {
super.onDestroy();
CookieSyncManager.createInstance(getActivity().getApplicationContext());
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
mWebView.removeAllViews();
mWebView.destroyDrawingCache();
mWebView.clearDisappearingChildren();
mWebView.clearFormData();
mWebView.clearHistory();
mWebView.clearCache(true);
mWebView.loadUrl("about:blank");
mWebView.pauseTimers();
mLayout.removeAllViews();
mWebView.destroy();
mWebView = null;
getActivity().getApplicationContext().deleteDatabase("webview.db");
getActivity().getApplicationContext().deleteDatabase("webviewCache.db");
}
您能否建议我还需要尝试什么=)
【问题讨论】:
-
正在尝试加载视频?
-
不,一帧谷歌地图,一帧网页,两帧图片
-
再添加一次你是用url加载吗?
-
不,忘了说,我是从本地文件(每次)加载它,比如 file://
/page.html -
getActivity().getApplicationContext() 使用活动上下文并检查
标签: java android iframe cookies webview