【发布时间】:2014-07-16 13:00:01
【问题描述】:
一旦有人购买了我们的应用程序,我就在该类中有一个 java 类,然后它将开始下载,并且必须出现进度对话框,而不是转到其他页面,当我退出应用程序并重新启动时它开始下载。 请帮我摆脱这个烂摊子...
谢谢
【问题讨论】:
-
泄漏的窗口是由于没有关闭创建它的窗口(即Activity)中的对话框造成的。需要注意的是,如果您的下载被取消,那么
onPostExecute()根本不会运行,这意味着您应该将pDialog.dismiss()放在您的onCancelled()覆盖中。 -
现在取消后仍然显示错误以及新错误已到达 07-16 18:59:44.261: E/AndroidRuntime(7452): java.lang.IllegalArgumentException: View not attach to window manager 07-16 18:59:44.261: E/AndroidRuntime(7452): 在 cdl.shrihanuman3d.DownloadActivity$DownloadAsyncTask.onCancelled(DownloadActivity.java:486) 07-16 18:59:44.261: E/AndroidRuntime(7452): 在android.os.AsyncTask.onCancelled(AsyncTask.java:404) 07-16 18:59:44.261: E/AndroidRuntime(7452): 在 android.os.AsyncTask.finish(AsyncTask.java:629)
-
我刚刚注意到您的代码存在一个非常大的问题。您有两个名为
pDialog的内部变量。一个在您的DownloadActivity中,一个在您的DownloadAsyncTask中。基本上,删除 Activity 中对pDialog的所有引用。您应该从 AsyncTask 中创建和销毁 AlertDialog -
我很抱歉,但没有一个小的解决办法。您对进度对话框的引用真的很混乱,所以我能提出的最好建议是完全删除它。一旦您的代码没有引发泄漏错误,请返回并仅在 AsyncTask 中创建和销毁进度对话框。
标签: android android-activity android-asynctask progressdialog onresume