【问题标题】:WebView take very long time when close internet connection during loading page在加载页面期间关闭互联网连接时,WebView 需要很长时间
【发布时间】:2016-07-10 14:10:52
【问题描述】:

我在 android 应用程序上工作,我有一个 webview 可以为用户显示一些 web 内容。

现在我尝试做一些集成测试用例,以确保所有事情都是正确的。

其中一个测试用例是在加载页面期间关闭互联网连接并检查行为。

这是我的代码:

        @Override
    public void initializeWebViewCallbacks() {
       if(!InternetHelper.isThereInternetConnection(AuthFragment.this.context()))
       {
           AuthFragment.this.showRetry();

}
else{

           wv_auth.setWebViewClient(new WebViewClient());
           wv_auth.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
           wv_auth.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

           if (Build.VERSION.SDK_INT >= 19) {
               wv_auth.setLayerType(View.LAYER_TYPE_HARDWARE, null);
           }
           else {
               wv_auth.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
           }

           wv_auth.loadUrl("http://myurl");

           wv_auth.setWebViewClient(new WebViewClient() {

               @Override
               public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
                   super.onReceivedHttpError(view, request, errorResponse);
                   wv_auth.setVisibility(View.GONE);
                   AuthFragment.this.hideLoading();
                   AuthFragment.this.showRetry();
               }

               @Override
               public void onPageStarted(WebView view, String url, Bitmap favicon)
               {
                   super.onPageStarted(view, url, favicon);
                   AuthFragment.this.showLoading();
               }


               @SuppressWarnings("deprecation")
               @Override
               public boolean shouldOverrideUrlLoading(WebView view, String url) {
                   view.loadUrl(url);
                   return true;
               }

               @TargetApi(android.os.Build.VERSION_CODES.M)
               public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                   return shouldOverrideUrlLoading(view, request.toString());
               }


               @Override
               public void onPageFinished(WebView view, String url) {
                   super.onPageFinished(view, url);
                   AuthFragment.this.hideLoading();
                  // some code
                       new Handler().postDelayed(new Runnable() {
                           public void run() {
                               ((BaseActivity)getActivity()).navigator.navigateToMainActivity(AuthFragment.this.getActivity(),false);
                           }
                       },  200);
                   }
               }

               @SuppressWarnings("deprecation")
               @Override
               public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                   super.onReceivedError(view,errorCode,description,failingUrl);
                   // Handle the error
                   wv_auth.setVisibility(View.GONE);
                   AuthFragment.this.hideLoading();
                   AuthFragment.this.showRetry();
               }

               @TargetApi(android.os.Build.VERSION_CODES.M)
               @Override
               public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr) {
                   // Redirect to deprecated method, so you can use it in all SDK versions
                   onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString());
               }


           });
       }

    }

当我在加载页面期间关闭互联网连接时,进度圈仍然运行大约 30 分钟,并且断点没有通过 onReceivedError(...) 所以我无法处理这种情况,有什么建议吗? ?

【问题讨论】:

标签: android webview android-internet


【解决方案1】:

我认为这是 loadUrl(..) 方法的问题。

我尝试了所有可能的解决方案,并在此处遵循所有解决方案:SO question 但没有机会。

我注意到,当您创建托管 web 视图的活动或片段时,每件事都正常工作,所以我通过导航到另一个中间空白活动 1 秒钟然后返回到此活动来解决问题.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多