活动频繁打开并结束时,webview为空白

时间:2019-11-01 13:34:28

标签: android webview

在我的项目中,使用webview加载pdf。

在onCreate中初始化webview

WebSettings webSettings = webView.getSettings();
webSettings.setUseWideViewPort(true); 
webSettings.setLoadWithOverviewMode(true);        
webSettings.setLoadsImagesAutomatically(true);
webSettings.setDefaultTextEncodingName("utf-8");
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true); 
webSettings.setDisplayZoomControls(false); 
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            Log.d("test", "shouldOverrideUrlLoading");
            return true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            Log.d("test", "onPageFinished");
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            Log.d("test", "onPageStarted url=" + url);
        }

        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            super.onReceivedError(view, errorCode, description, failingUrl);
            Log.d("test", "onReceivedError errorCode=" + errorCode + "  description=" + description);
        }

        @Override
        public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
            super.onReceivedHttpError(view, request, errorResponse);
            Log.d("test", "onReceivedHttpError");
        }

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            super.onReceivedSslError(view, handler, error);
            Log.d("test", "onReceivedSslError error=" + error.toString());
        }

当请求网络获取pdf网址时,请调用webview.loadUrl()

String encodeUrl = URLEncoder.encode(pdfUrl, "UTF-8");
Log.d("test", "start load pdf");
webView.loadUrl("https://docs.google.com/gview?embedded=true" + "&url=" + encodeUrl);

但是有时Webview会显示为空白,而那一次我发现Log是

start load pdf
onPageFinished

我不知道为什么不调用onPageStarted,而是直接调用onPageFinished,甚至没有收到任何错误。活动频繁打开并完成且Webview加载未完成时,出现此错误的可能性很高。

谢谢你。

0 个答案:

没有答案