您的位置:首页 > 移动开发 > Android开发

java.lang.IllegalArgumentException: Receiver not registered: android.widget.ZoomButtonsController$1@

2017-03-17 15:27 459 查看

最近抓LOG发现有这个错;

java.lang.IllegalArgumentException: Receiver not registered:
android.widget.ZoomButtonsController$1@7b2c560
at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:781)
atandroid.app.ContextImpl.unregisterReceiver(ContextImpl.java:1727)
at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:522)
at android.widget.ZoomButtonsController.setVisible(ZoomButtonsController.java:408)
at android.widget.ZoomButtonsController$2.handleMessage(ZoomButtonsController.java:178)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:159)
at android.app.ActivityThread.main(ActivityThread.java:5541)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:975)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)


问题的来源是WebView中包含一个ZoomButtonsController,当使用web.getSettings().setBuiltInZoomControls(true);启用后,用户一旦触摸屏幕,就会出现缩放控制图标。如果图标自动消失前退出当前Activity的话,就会报上面的这些异常。

查到的解决方案:

禁用

在Activity的onDestroy里面加上这么一句:web.setVisibility(View.GONE);把WebView设置为GONE就可以了。

延迟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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐