美文网首页Andorid的好东西
WebView的setBuiltInZoomControls未知

WebView的setBuiltInZoomControls未知

作者: Stephen__Li | 来源:发表于2017-05-12 11:14 被阅读230次

    在友盟log上面发现有这一个崩溃日志,平时开发时都没有发现有这样的崩溃:
    java.lang.IllegalArgumentException: Receiver not registered: android.widget.ZoomButtonsController$1@f45a001
    at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:809)
    at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1294)
    at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:576)
    at android.widget.ZoomButtonsController.setVisible(ZoomButtonsController.java:404)
    at android.widget.ZoomButtonsController$2.handleMessage(ZoomButtonsController.java:178)
    at android.os.Handler.dispatchMessage(Handler.java:111)
    at android.os.Looper.loop(Looper.java:207)
    at android.app.ActivityThread.main(ActivityThread.java:5939)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:956)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:817)

    通过查找网上资料知道这个崩溃应该是启用webView.getSettings().setBuiltInZoomControls(true)后没有做适当处理导致的。项目中的办法是直接把它禁用掉,因为在这些页面缩放控制并不是必须的。

    如果必须在webView进行缩放控制,可以用如下的处理办法:

    1. 在Activity的onDestroy里面加上这么一句:web.setVisibility(View.GONE);把WebView设置为GONE就可以了。
    2. 延迟destroy webview
    @Override 
    protected void onDestroy() { 
        /* if(webview!=null) {
              webview.setVisibility(View.GONE); 
              webview.removeAllViews(); 
              webview.destroy(); 
              releaseAllWebViewCallback();
           }*/ 
          if(webview != null) { 
              webview.getSettings().setBuiltInZoomControls(true); 
              webview.setVisibility(View.GONE); 
              long timeout = ViewConfiguration.getZoomControlsTimeout();//timeout ==3000           
              Log.i("time==",timeout+""); 
              new Timer().schedule(new TimerTask() { 
                    @Override 
                    public void run() { 
                    // TODO Auto-generated method stub 
                    webview.destroy(); 
                    } 
              }, timeout); 
          }
          super.onDestroy(); 
    }
    

    相关文章

      网友评论

        本文标题:WebView的setBuiltInZoomControls未知

        本文链接:https://www.haomeiwen.com/subject/dasztxtx.html