1

私は Web で検索しましたが、ユーザーが次の例のように asynctask でダイアログを表示したい場合のみを見つけました: protected void onPreExecute()。

{
                            super.onPreExecute();
                            pDialog = new ProgressDialog(NumericoComercial.this);
                            pDialog.setMessage("Actualizando ...");
                            pDialog.setIndeterminate(false);
                            pDialog.setCancelable(true);
                            pDialog.show();
                        }

私が知りたいのは、通常行われているように onPreExecute() と onPostExecute() でダイアログを表示せずに asynctask を実行できるかどうかです。

Window Leaked Error に関するダイアログで asynctask を使用すると、いくつかの問題が発生しました。私が試したことは、次の例のように、事前アクションと事後アクションにダイアログを追加しないことです。

class UpdateCandidatos extends AsyncTask<String, String, String> {


                    @Override
                    protected void onPreExecute() {

                    }


protected void onPostExecute(String file_url) {

                    }
                }

たとえば、アクティビティが終了したときなど、このメソッドを使用してエラーが発生する可能性はありますか?

ありがとうございました

4

2 に答える 2

1

onPause() メソッドで非同期タスクをキャンセルすることをお勧めします。このようにして、アクティビティが終了した場合、非同期タスクはデータを公開しようとせず、onPostExecute は呼び出されません。

うーん、onPostExecute() でエラーが発生することはありません。データを表示せずに非同期タスクを使用できますが、必須ではありません。その関数を @override する必要さえありません。 Void を宣言に入れるだけです ( ...extends AsyncTask<...,...,Void> )

于 2013-10-03T10:50:39.283 に答える
1

onPreExecute()これらのメソッド (Dialog、ProgressDialog など) に記述したものはすべて、クラスが正しく機能するために不要ですonPostExecute()Aynctask

class UpdateCandidatos extends AsyncTask<String, String, String> {

    protected Long doInBackground(String... urls) { 
        //add here your background work
    }

}

AsyncTaskこれは、ダイアログを表示せずにバックグラウンドで「何か」を行う、非常に単純化された完全なフォークです。

注: アプリのライフサイクルに従ってタスクを処理する必要があります

于 2013-10-03T11:03:04.747 に答える