Android活动泄漏了窗口DecorView

时间:2019-11-18 17:48:52

标签: android dialog

我有一个异步任务,在onPreExecute中,我遇到以下错误:android.view.WindowLeaked:活动泄漏了窗口DecorView @ db70191

@Override
protected void onPreExecute() {
    Zoznam activity = activityReference.get();
    if (activity == null || activity.isFinishing() || activity.isDestroyed()) return;
    super.onPreExecute();
    dialog = new ProgressDialog(activity);
    dialog.setMessage(activity.getResources().getString(R.string.Loading));
    dialog.setTitle(activity.getResources().getString(R.string.connecting));
    dialog.show();
    dialog.setCancelable(false);
}

仅在以下情况下会发生这种情况:当连接速度慢并且连接到服务器的时间很长,并且出现对话框消息时,用户突然手动强制关闭应用(设备上的中间按钮,等)。

因此,从逻辑上讲,由于用户强制应用程序结束,因此对话框窗口未关闭。如何避免这种情况?通常,只有在对话框显示时用户关闭应用程序时,才没有问题。

1 个答案:

答案 0 :(得分:0)

我想我找到了一个可以帮助我的答案:

    @Override
public void onDestroy() {
    super.onDestroy();
    if (dialog != null) {
        dialog.dismiss();
        dialog = null;
    }
}