Android开发 WebView ERR_CACHE_MISS Cannot call determinedVisibility()

Posted Android小屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发 WebView ERR_CACHE_MISS Cannot call determinedVisibility()相关的知识,希望对你有一定的参考价值。

WebSettings webSettings=mWebView.getSettings();
  webSettings.setSavePassword(false);//是否自动保存密码
  webSettings.setSaveFormData(false);//表格数据
  webSettings.setAppCacheEnabled(true);//缓存
  if (Build.VERSION.SDK_INT >= 19)
   mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//缓存
  
  webSettings.setjavascriptEnabled(true); //支持JavaScript
  webSettings.setBuiltInZoomControls(true);
  webSettings.setSupportZoom(true);//支持缩放
  webSettings.setAllowFileAccess(true); // 允许访问文件 
  webSettings.supportMultipleWindows();//多窗口
  webSettings.setLoadsImagesAutomatically(true);//自动加载图片
  /**  
   * 用WebView显示图片,可使用这个参数 设置网页布局类型: 1、LayoutAlgorithm.NARROW_COLUMNS :  
   * 适应内容大小 2、LayoutAlgorithm.SINGLE_COLUMN:适应屏幕,内容将自动缩放
   */ 
  webSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); 
  webSettings.setUseWideViewPort(true);//如果setUseWideViewPort( true ) , 它将WebView加载和该网页的元标记内定义的属性。 那么根据定义缩放网页, 在html
  webSettings.setLoadWithOverviewMode(true);//setLoadWithOverviewMode( true ) 加载WebView完全缩小
  webSettings.setDisplayZoomControls(false);//false 不显示缩放按钮 true 显示
  mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);//提高渲染等级
  mWebView.getSettings().setBlockNetworkImage(true);//阻塞,先不加载图片(阻止图片的网络数据)
  mWebView.getSettings().setBlockNetworkImage(false);//解除阻止
  mWebView.getSettings().setBlockNetworkLoads(false);//默认false,设置为true,网页上面报net::ERR_CACHE_MISS错误 log Cannot call determinedVisibility() - never saw a aconnetion for the pid:xxx(这个项目中我的错误是这样的)
  mWebView.requestFocusFromTouch();//支持手势焦点,如果不设置,可能会导致网页上面输入法弹不出来
  mWebView.getSettings().setDomStorageEnabled(true);

  mWebView.requestFocus();//设置是否获得焦点。若有requestFocus()被调用时,
  //后者优先处理。注意在表单中想设置某一个如EditText获取焦点,光设置这个是不行的,需要将这个EditText前面的focusable都设置为false才行。在Touch模式下获取焦点需要设置focusableInTouchMode为true。
  /*
   *web.setInitialScale(25); 25%为最小缩放等级 
   * 解释:  里面的数字代表缩放等级
        web.setInitialScale(100);  代表不缩放。
                 什么是不缩放?     比如你要加载的网页中有图片的宽度是 500px ,如果你的手机分辨率(屏幕宽度) 是1000的话,那么整个图片只占一半的屏幕。  其他的字体都是按照标准展示
                 如果这个时候如果你设置 web.setInitialScale(200) ,代表放大一倍,真个网页都会放大一倍,这个时候图片正好展示整个屏幕宽度,另外网页的字体也会放大一倍
                如果这个时候如果你设置 web.setInitialScale(50) ,代表缩小一倍,这个时候图片正好展示只占屏幕的四分之一,另外网页的字体也会同时变小*/
  mWebView.setInitialScale(25);
  mWebView.setBackgroundColor(0);

 

  mWebView.setWebChromeClient(new WebChromeClient()
   /**
    * 网页加载进度条 顶部 横向
    */
   @Override
   public void onProgressChanged(WebView view, int newProgress)
    if(newProgress<100||newProgress>=0)
     pbLoadLine.setVisibility(View.VISIBLE);
    
    pbLoadLine.setProgress(newProgress);
    super.onProgressChanged(view, newProgress);
   
  );

  // 设置超链接使用WebView加载,不使用系统本身的浏览器
  mWebView.setWebViewClient(new WebViewClient()
   @Override
   public boolean shouldOverrideUrlLoading(WebView view, String url)
    // 此处URL加载的是Web网页上的超链接,切勿修改成WebView的请求地址
    mWebView.loadUrl(url);
    return true;
   

   @Override
   public void onPageStarted(final WebView view, String url, Bitmap favicon)
    super.onPageStarted(view, url, favicon);
    //开始加载网页时处理,如:显示“加载提示”的加载对话框
    if(view!=null)
     ivExit.setImageResource(R.drawable.ic_stop_for_url_edit_normal);
     ivExit.setOnClickListener(new OnClickListener()

      @Override
      public void onClick(View v)
       view.stopLoading();//停止加载
       pbLoadLine.setVisibility(View.GONE);//隐藏进度条
      
     );
    
   
   @Override
   public void onPageFinished(WebView view, String url)
    super.onPageFinished(view, url);
    //网页加载完成时处理 如:让“加载对话框”消失
    if(view!=null)
     ivExit.setImageResource(R.drawable.icon_forward);
    
    pbLoadLine.setVisibility(View.GONE);//隐藏进度条
    ivExit.setOnClickListener(new OnClickListener()

     @Override
     public void onClick(View v)
      mWebView.goBack();

     
    );
   

   @Override
   public void onReceivedError(WebView view, int errorCode,
     String description, String failingUrl)
    if (NetUtil.isConnectivity(mContext))
     ToastUtils.DefaultToast(mContext, getString(R.string.toast_webInternet_data_error));
     //     finish();
     else
     ToastUtils.DefaultToast(mContext, getString(R.string.toast_webInternet_no_internet));
     //     finish();
    
   
   public void onReceivedSslError(WebView view,
     SslErrorHandler handler, SslError error) // 重写此方法可以让webview处理https请求
    handler.proceed();

   


  );

  mWebView.loadUrl("http://www.baidu.com");

以上是关于Android开发 WebView ERR_CACHE_MISS Cannot call determinedVisibility()的主要内容,如果未能解决你的问题,请参考以下文章

Android WebView开发:WebView性能优化

Android WebView开发:WebView性能优化

Android WebView开发:WebView性能优化

Android WebView开发:WebView性能优化

Android WebView开发:自定义WebView工具框

Android WebView开发:WebView与Native交互