Java 致命异常:android.view.WindowManager$BadTokenException无法添加窗口--标记无效;你的活动正在进行吗?

Java 致命异常:android.view.WindowManager$BadTokenException无法添加窗口--标记无效;你的活动正在进行吗?,java,android,dialog,xiaomi,Java,Android,Dialog,Xiaomi,我知道这个问题已经讨论过好几次了,但相信我,我从来没有得到任何有效的答案。 在我的主要活动中,我很少使用对话框来通知用户一些操作,但我在小米设备上得到了这个特定错误(特别是96%)。 ` com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 我介绍了每个对话框显示方法,如 if (!MainActivityNew.this.isFinishing()) dialogDownload.show(); ` 但我还是在发布模式下遇

我知道这个问题已经讨论过好几次了,但相信我,我从来没有得到任何有效的答案。 在我的主要活动中,我很少使用对话框来通知用户一些操作,但我在小米设备上得到了这个特定错误(特别是96%)。 `

com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)

我介绍了每个对话框显示方法,如

if (!MainActivityNew.this.isFinishing())
dialogDownload.show();
` 但我还是在发布模式下遇到了这个错误,主要是在小米设备上 对于Android版本7,请帮助我,我在过去一个月一直在解决这个问题

以下是来自firebase Crashlytics的一些数据

装置 100%小米 操作系统 100%安卓7 设备状态 4%背景使用异步任务或处理程序 比如:


这个问题不是因为对话,而是因为吐司。这个Toast问题主要出现在android 7.1版本中,在该版本中,上下文变为null。这位先生创造了一个解决方案。我已经测试过了,效果很好。你可以试试这个

 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();
            }

请参阅此链接:-谢谢Rajshree,但我已经提到我使用了上面答案中所述的isFinishing()方法。从何处启动showToast方法?它是来自Activity、AsyncTask还是任何其他后台线程?它来自主UIThread@SantoshPatange你处理好了吗?我有一个类似的问题,但对于摩托罗拉E4和安卓7.1.1,就像作者所说的——他检查活动是否正在完成
Use private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message message) {
switch (message.what) {
  case DISPLAY_DLG:
    if (!isFinishing()) {
    dialogDownload.show();
    }
    break;
  }
 }
};
 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();
            }