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

    xiaoxiao2023-03-25  6

    问题描述


    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(); }
    转载请注明原文地址: https://ju.6miu.com/read-1203926.html
    最新回复(0)