当我尝试完成活动时,我得到了泄漏的窗口错误。
我查看了很多类似的问题,答案是使用dismiss()
代替hide()
,或者在调用finish()
之前关闭对话框。
我致电dismiss()
然后致电finish()
为什么我会泄密?
这是我在扩展AsyncTask
的类中的ProgressDialog
代码
public Background(Context c){
context = c; //the activity's context
dialog = new ProgressDialog(c);
}
protected void onPreExecute(){
dialog.show();
}
protected String doInBackground(String... urls) {
//do http request
return "";
}
protected void onPostExecute(String result) {
dialog.dismiss();
if(request == LOGOUT_REQUEST)
finish();
else{
getResults(document);
}
}
之前有效,但我相信我的代码是错误的。我正在开始一项新的活动回到旧活动,而不仅仅是调用完,我相信这是正确的事情。
答案 0 :(得分:1)
您正在使用onPostExecute
方法取消对话框。除非AsyncTask
已完成,否则该方法不会运行。您是否仅在使用后退按钮退出应用程序时收到错误消息?如果是这样,您还应确保在您的活动的onDestroy
中解除对话框。