私はこの質問が何度か議論されていることを知っていますが、私は何の答えも得られなかったと信じています。メインアクティビティで、いくつかのダイアログを使用していくつかの操作についてユーザーに通知しましたが、Xiaomiデバイスでこの特定のエラーのほとんど(特に96%)が発生します。 `
Fatal Exception: Android.view.WindowManager$BadTokenException
Unable to add window -- token Android.os.BinderProxy@f839de9 is not valid; is your activity running?
Android.view.ViewRootImpl.setView (ViewRootImpl.Java:697)
Android.view.WindowManagerGlobal.addView (WindowManagerGlobal.Java:347)
Android.view.WindowManagerImpl.addView (WindowManagerImpl.Java:94)
Android.widget.Toast$TN.handleShow (Toast.Java:463)
Android.widget.Toast$TN$2.handleMessage (Toast.Java:346)
Android.os.Handler.dispatchMessage (Handler.Java:102)
Android.os.Looper.loop (Looper.Java:163)
Android.app.ActivityThread.main (ActivityThread.Java:6377)
Java.lang.reflect.Method.invoke (Method.Java)
com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.Java:904)
com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:794)I covered each Dialog Show method like
if (!MainActivityNew.this.isFinishing())
dialogDownload.show();
`しかし、それでもリリースモードでこのエラーが発生しますXiaomiデバイスAndroidバージョン7、過去1か月間この問題が発生するのを手伝ってください。
これがfirebase Crashlyticsのデータです
デバイス100%Xiaomiオペレーティングシステム100%Android 7デバイスの状態4%バックグラウンド
この問題はDialogが原因ではなく、Toastが原因です。主にこのトーストの問題はAndroid 7.1バージョンで、コンテキストがnullになります。この紳士によって作成されたソリューションがあります Solution 。私はテストしましたが、これは非常にうまく機能していますこれを試すことができます。
if (Android.os.Build.VERSION.SDK_INT == 25) {
ToastCompat.makeText(context, message, Toast.LENGTH_SHORT)
.setBadTokenListener(toast -> {
Log.e("failed toast", message);
}).show();
} else {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}