關(guān)于Android7.x系統(tǒng)Toast顯示異常BadTokenException解決方案
BadTokenException詳細及原因
Fatal Exception: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@fcd9ef6 is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:806)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:369)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
at android.widget.Toast$TN.handleShow(Toast.java:459)
at android.widget.Toast$TN$2.handleMessage(Toast.java:342)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:186)
at android.app.ActivityThread.main(ActivityThread.java:6491)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:804)
由于Android團隊意識到這個問題,從而在API 26的時候,加了一個try catch去捕獲了這個錯誤。但對于已經(jīng)發(fā)布了的API25,是一個永久的痛,無法修復(fù)。只能靠開發(fā)者自己了。。。
對于這個問題,我搜索了網(wǎng)上的解決方法,比較靠譜的是這個github:BadTokenException on Toast ,但是并不完美,這個解決方案,我在Nubia Z17S上面測試,結(jié)果無法正常顯示Toast。我無法統(tǒng)計還有多少手機會出現(xiàn)同樣的問題,未得到修復(fù)之前,使用這個方案有很大的風(fēng)險。我嘗試去修復(fù)它,可是什么信息都沒有,無奈。