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

来源:互联网 发布:怎么开发app软件 编辑:程序博客网 时间:2024/06/05 20:12

问题描述


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方法中进行的操作:

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

错误log:

Uncaught Exception in main[1]                                           java.lang.IllegalArgumentException: Receiver not registered: android.widget.ZoomButtonsController$1@683fa71at 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缩放时退出崩溃。 */@Overridepublic void finish() {    ViewGroup view = (ViewGroup) getWindow().getDecorView();    view.removeAllViews();    super.finish();}
0 0