1

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

我查看了很多关于此的类似问题,答案是使用dismiss()而不是hide(),或者在调用之前关闭对话框finish()

我打电话dismiss()然后打电话finish()为什么我会漏水?

这是我ProgressDialog在扩展 AsyncTask 的类中的代码

    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);
        }
    }

它以前工作过,但我相信我的代码是错误的。我开始一项新活动回到旧活动,而不是仅仅调用完成,我认为这是正确的做法。

4

1 回答 1

1

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

于 2012-05-09T17:20:08.850 回答