gpt4 book ai didi

java - Android(4.4+) WebView 第二次加载时不显示 iframe 页面内容

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:28 24 4
gpt4 key购买 nike

我想在本地存储的 webview 页面中显示,第一次加载页面时看起来不错,但是当我删除 webview 并再次添加它时,它看起来像图片(对于 4.4+,在以前的 android 版本上只是黑屏):

enter image description here

webview 每次都添加 progrommatcaly(使用应用程序上下文),关闭缓存、cookies,并在销毁时将其删除。

这是我的代码:

    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");
}

请问我还需要尝试什么吗=)

最佳答案

看起来是

mWebView.pauseTimers();

将数据保存在一些static 变量中...因此,我销毁 webview 并创建新的 iframe 已停止播放 iframe 并不重要。所以,我删除了这一行,它现在可以工作了

小心使用这个标志

顺便说一句,我猜它可能与内存泄漏问题有关..但这是另一回事了

关于java - Android(4.4+) WebView 第二次加载时不显示 iframe 页面内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37296324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com