活动已经泄露窗口?

时间:2014-07-16 13:00:01

标签: android android-activity android-asynctask progressdialog onresume

我在该类中有一个java类,很快有人购买我们的应用程序然后它将开始下载并且进度对话框必须出现而不是它进入其他页面并且当我从应用程序中退出并且当我重新启动时它开始下载。 请帮我解决这个烂摊子......

谢谢

2 个答案:

答案 0 :(得分:1)

在显示之前检查对话框的条件。

喜欢这个

if(pDialog!=null)
{
  if(!pDialog.isShowing())
{
pDialog.show();
}
}

同时删除onPostexecute()中的对话框,检查是否为空。

如果仍无效,只需删除pDialog,然后使用您的代码尝试一次。

答案 1 :(得分:1)

发生错误的两个原因是:

  1. 如果您在退出Dialog后尝试显示Activity,则会发生错误。

  2. 此外,如果AsyncTask中出现未处理的异常,导致Activity关闭,则打开进度对话框将导致Exception

  3. 根据您发布的日志,在您致电pDialog.show()后发生错误,这可能是我之前提到的第一个原因。

    此外,您在代码的很多部分都在调用finish(),可能其中一个调用会让您Activity停止并泄露您的Dialog

    在显示Activity之前,您必须检查其中哪一位正在完成Dialog。一个好的解决方案是在调用Dialog之前解除finish()(如果它显示)。