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

WebView中使用setBuiltInZoomControls进行缩放并destroy webview时崩溃

2016-09-28 11:54 477 查看

问题描述

webview使用settings.setBuiltInZoomControls(true);进行控制缩放。由于某些原因需要在该activity的onDestroy方法里面调用webView.destroy()。当进入该webview并且进行缩放操作时,退出该activity程序崩溃。

settings代码如下:

settings = previewWebview.getSettings();
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setBuiltInZoomControls(true);
settings.setDefaultTextEncodingName("gbk");


在activity的onDestroy方法中进行的操作:

@Override
protected void onDestroy() {
super.onDestroy();
previewWebview.destroy();
}


错误log:

Uncaught Exception in main[1]                                           java.lang.IllegalArgumentException: Receiver not registered:
android.widget.ZoomButtonsController$1@683fa71
at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:878)
at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1279)
at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:601)
at android.widget.ZoomButtonsController.setVisible(ZoomButtonsController.java:404)
at android.widget.ZoomButtonsController$2.handleMessage(ZoomButtonsController.java:178)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7237)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
(LogExceptionHandler.java:29)


原因分析

未知。

解决方案

添加如下代码:

/**
* 防止webview缩放时退出崩溃。
*/
@Override
public void finish() {
ViewGroup view = (ViewGroup) getWindow().getDecorView();
view.removeAllViews();
super.finish();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐