Android 3.X中WebView使用ZOOM崩潰的問題

來源:互聯網
上載者:User

09-29 21:44:08.557: ERROR/ActivityThread(31036): Activity XXX has leaked IntentReceiver 
android.widget.ZoomButtonsController$1@419abcf0 that was originally registered here. Are you missing a call to unregisterReceiver()?
09-29 21:44:08.557: ERROR/ActivityThread(31036): android.app.IntentReceiverLeaked: XXX has leaked IntentReceiver 
android.widget.ZoomButtonsController$1@419abcf0 that was originally registered here. Are you missing a call to unregisterReceiver()?
09-29 21:44:08.917: ERROR/AndroidRuntime(31036): java.lang.IllegalArgumentException: Receiver not registered: 
android.widget.ZoomButtonsController$1@419abcf0
09-29 21:44:08.917: ERROR/AndroidRuntime(31036):     at android.app.LoadedApk.forgetReceiverDispatcher
(LoadedApk.java:650)
09-29 21:44:08.917: ERROR/AndroidRuntime(31036):     at android.app.ContextImpl.unregisterReceiver
(ContextImpl.java:1091)
09-29 21:44:08.917: ERROR/AndroidRuntime(31036):     at android.content.ContextWrapper.unregisterReceiver
(ContextWrapper.java:354)
09-29 21:44:08.917: ERROR/AndroidRuntime(31036):     at android.widget.ZoomButtonsController.setVisible
(ZoomButtonsController.java:405)
09-29 21:44:08.917: ERROR/AndroidRuntime(31036):     at android.widget.ZoomButtonsController$2.handleMessage
(ZoomButtonsController.java:179)
09-29 21:44:08.917: ERROR/AndroidRuntime(31036):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 21:44:08.917: ERROR/AndroidRuntime(31036):     at android.os.Looper.loop(Looper.java:152)
09-29 21:44:08.917: ERROR/AndroidRuntime(31036):     at android.app.ActivityThread.main(ActivityThread.java:4559)
09-29 21:44:08.917: ERROR/AndroidRuntime(31036):     at java.lang.reflect.Method.invokeNative(Native Method)
09-29 21:44:08.917: ERROR/AndroidRuntime(31036):     at java.lang.reflect.Method.invoke(Method.java:491)
09-29 21:44:08.917: ERROR/AndroidRuntime(31036):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
(ZygoteInit.java:841)
09-29 21:44:08.917: ERROR/AndroidRuntime(31036):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
09-29 21:44:08.917: ERROR/AndroidRuntime(31036):     at dalvik.system.NativeStart.main(Native Method)

WebView中包含一個ZoomButtonsController,當使用web.getSettings().setBuiltInZoomControls(true);啟用後,使用者一旦觸控螢幕幕,就會出現縮放控製圖標。這個表徵圖過上幾秒會自動消失,但在3.X系統上,如果表徵圖自動消失前退出當前Activity的話,就會報上面的這些異常。
根據異常資訊再參考一下WebView的源碼就可以知道ZoomButtonsController有一個register和unregister的過程。但是這兩個過程是我們控制不了的,WebView有顯示控制的API但我們訪問不過。我們能訪問到的只有這幾個和ZoomButtonsController的控制相關:
void setBuiltInZoomControls(boolean enabled)
void setDefaultZoom(WebSettings.ZoomDensity zoom)
void setDisplayZoomControls(boolean enabled)
void setSupportZoom(boolean support)
試過了一遍都不管用。
最後看終極解析方案吧
在Activity的onDestroy裡面加上這麼一句:web.setVisibility(View.GONE);把WebView設定為GONE就可以了。

另外,這個問題在2.X上面不存在。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.