cari

Rumah  >  Soal Jawab  >  teks badan

android - WebView偶尔无法加载,没有发起请求

webview有时候加载不出网页,页面关掉再打开也不行,显示一片空白。放着不动,过一会,反而能打开网页。

当加载不出的时候,发现根本没有发起请求。

有大神知道原因吗?

高洛峰高洛峰2772 hari yang lalu792

membalas semua(4)saya akan balas

  • 阿神

    阿神2017-04-17 17:50:28

    WebView这个控件作为Android系统中很重要的一个控件,其不会出现楼主所说的情况的。楼主可能看到的是表面显示。

    当调用WebViewloadUrl(String url)之后,WebView就开始加载网页了,但是在没有加载出来的时候,它会仍然显示着其原有的白色背景,加载出来后才会显示网页。这可能是你说的显示一片空白,然后过一会才能打开网页。其实一直都在加载,只是加载比较慢,你看不出来有变化而已。

    楼主可以使用WebView.setWebViewClient,传入一个自定义的WebViewClient。同样还有WebView.setWebChromeClient。覆写其中一些函数:

    webView.setWebViewClient(new WebViewClient() {
    
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            //页面开始加载
        }
    
        @Override
        public void onPageFinished(WebView view, String url) {
            //页面加载完毕
        }
    
        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            //加载出现失败
            super.onReceivedError(view, errorCode, description, failingUrl);
        }
    
    });
    webView.setWebChromeClient(new WebChromeClient() {
    
        public void onProgressChanged(WebView view, int progress) {
            //加载过程回调,progress是接受到的数据的百分比
        }
    
    });
    

    楼主如果对WebView进行如上的配置,然后在loadUrl(String url),就能看到这些函数的回调了。问题里的内容都可以从Log里得到解答。

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:50:28

    1、这样的情况,我昨天真的遇到了
    2、分析原因:A.建议楼主用charles抓包看看

           B.我的原因:加载url的时候,一下子激增了ajax请求与图片请求
           C.我的解决方法:让前端的同学做一下分页加载以及懒加载,不要在打开url的瞬间发出那么多请求

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-17 17:50:28

    确实是这样的,我也遇到过,发现不调用wv_viewerweb.removeAllViews();
    // wv_viewerweb.destroy();
    // wv_viewerweb = null;这个就不会有这问题

    balas
    0
  • ringa_lee

    ringa_lee2017-04-17 17:50:28

    问题解决了吗???我也掉坑里了,求大神的解决方法..............

    balas
    0
  • Batalbalas