解雇ProgressDialog但仍然存在泄漏

时间:2012-05-09 17:03:12

标签: android progressdialog

当我尝试完成活动时,我得到了泄漏的窗口错误。

我查看了很多类似的问题,答案是使用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);
        }
    }

之前有效,但我相信我的代码是错误的。我正在开始一项新的活动回到旧活动,而不仅仅是调用完,我相信这是正确的事情。

1 个答案:

答案 0 :(得分:1)

您正在使用onPostExecute方法取消对话框。除非AsyncTask已完成,否则该方法不会运行。您是否仅在使用后退按钮退出应用程序时收到错误消息?如果是这样,您还应确保在您的活动的onDestroy中解除对话框。