1

アクティビティを終了しようとすると、leaked 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が完了するまで、そのメソッドは実行されません。戻るボタンでアプリを終了したときにのみエラーが発生しますか? その場合はonDestroy、Activity でダイアログが閉じられていることも確認する必要があります。

于 2012-05-09T17:20:08.850 に答える