веб-просмотр пуст, когда деятельность часто открывается и заканчивается - PullRequest
0 голосов
/ 01 ноября 2019

В моем проекте используйте веб-загрузку pdf.

init веб-просмотр в onCreate

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

когда запрос сети получает URL-адрес 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);

но иногда веб-просмотр будет пустым, и в этот раз я обнаружил, что Log равен

start load pdf
onPageFinished

Я не знаю, почему не вызывать onPageStarted, а напрямую вызывать onPageFinished, даже не получая никакой ошибки. Эта ошибка с большой вероятностью появляется, когда действия часто открываются и завершаются, а веб-просмотр не загружается.

Спасибо за ваш ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...