Receiver not registered: android.widget.ZoomButtonsController crash android

最近把公司APP適配到一個(gè)大屏安卓電視設(shè)備上時(shí),遇到了一個(gè)奇怪的BUG,只要退出某個(gè)WebView時(shí),就會(huì)閃退。異常信息如下:

java.lang.IllegalArgumentException: Receiver not registered: android.widget.ZoomButtonsController$1@bdd2e5a
    at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:765)
    at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1683)
    at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:511)
    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:135)
    at android.app.ActivityThread.main(ActivityThread.java:5280)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:963)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:758)

于是就各種百度,谷歌,得到的大致都是這種解決方案:


if(webview != null) {
                webview.getSettings().setBuiltInZoomControls(true);
                mWebView.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
                        mWebView.destroy();
                    }
                }, timeout);
            }

但是我試了以后并沒有得到解決,最后用了這種方法解決閃退問題,遇到的朋友可以試一下:

 /**
     * 防止webview縮放時(shí)退出崩潰。
     */
    @Override
    public void finish() {
        ViewGroup view = (ViewGroup) getWindow().getDecorView();
        view.removeAllViews();
        super.finish();
    }

重寫WebView的finish方法,通過getDecorView:這個(gè)方法獲取頂級(jí)視圖,然后移除所有View,問題得到解決。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android應(yīng)用層開發(fā)有兩種方式:客戶端開發(fā)和HTML5移動(dòng)端開發(fā),所謂的HTML5開發(fā)就是用HTML5+CSS...
    哎呦呦胖子斌閱讀 1,743評(píng)論 0 1
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,675評(píng)論 1 32
  • 就目前而言,如何應(yīng)對(duì)版本的頻繁更新呢,又如何靈活多變地展示我們的界面呢,這又涉及到了web app與native ...
    底層碼農(nóng)閱讀 3,460評(píng)論 2 22
  • UIButton中有屬性rac_command用于綁定一個(gè)已經(jīng)創(chuàng)建好的command(其使用在后面講到),當(dāng)你使用...
    開發(fā)界小學(xué)生閱讀 884評(píng)論 0 0
  • 我的記憶里關(guān)于父親的片斷很多,似乎不比母親的少,也許是因?yàn)楦赣H偏愛我的緣故,或者是因?yàn)楦赣H一直是個(gè)喜愛孩子而心思細(xì)...
    龍?jiān)耞閱讀 435評(píng)論 0 2

友情鏈接更多精彩內(nèi)容