我正在使用WebView
,但我有一个奇怪的问题。假设我使用loadUrl(...)
加载了youtube.com,它正在加载,但是如果我再次加载相同的页面,它就无法正确加载,甚至不会触发onPageFinished(...)
编辑:当我加载或任何其他具有交互性且具有js内容的网站时,它不会加载两次。 即使我创建了一个新的WebView实例。
Load youtube.com -> OK
Load youtube.com again -> Error, onPageFinished not called, white page
Load google.com -> OK
GoBack -> Youtube.com loaded but still problematic. (Only header and a few views)
清单:
<application
android:allowBackup="true"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:configChanges="keyboard|keyboardHidden|screenSize"
android:largeHeap="true"
android:vmSafeMode="true"
android:hardwareAccelerated="true"
>
以下是webView设置:
mWebView.setDrawingCacheBackgroundColor(0x00000000);
mWebView.setFocusableInTouchMode(true);
mWebView.setFocusable(true);
//mWebView.setAnimationCacheEnabled(false);
mWebView.setDrawingCacheEnabled(false);
mWebView.setWillNotCacheDrawing(true);
//mWebView.setAlwaysDrawnWithCacheEnabled(false);
mWebView.setScrollbarFadingEnabled(true);
mWebView.setSaveEnabled(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.getSettings().setDisplayZoomControls(false);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setSaveFormData(PrefsManager.getInstance().isSaveAutoFill());
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setSupportMultipleWindows(true);
mWebView.getSettings().setLoadsImagesAutomatically(PrefsManager.getInstance().isAutoLoadImages());
mWebView.getSettings().setGeolocationEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setAllowContentAccess(true);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
mWebView.getSettings().setAllowContentAccess(true);
导致这个问题的原因是什么? WebView是我的应用程序的主要功能,在此错误之前它就像魅力一样。
我也在使用WebViewClient和WebChromeClient来覆盖这些方法。
onProgressChanged, onReceivedTitle, onCloseWindow, onCreateWindow, onGeolocationPermissionsShowPrompt, onConsoleMessage, onReceivedSslError, onPageFinished, onPageStarted, shouldOverrideUrlLoading
答案 0 :(得分:0)
使用以下设置。
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setUseWideViewPort(true);