我有一个异步任务,在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);
}
仅在以下情况下会发生这种情况:当连接速度慢并且连接到服务器的时间很长,并且出现对话框消息时,用户突然手动强制关闭应用(设备上的中间按钮,等)。
因此,从逻辑上讲,由于用户强制应用程序结束,因此对话框窗口未关闭。如何避免这种情况?通常,只有在对话框显示时用户关闭应用程序时,才没有问题。
答案 0 :(得分:0)
我想我找到了一个可以帮助我的答案:
@Override
public void onDestroy() {
super.onDestroy();
if (dialog != null) {
dialog.dismiss();
dialog = null;
}
}