在友盟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进行缩放控制,可以用如下的处理办法:
- 在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();
}