1. ホーム
  2. android

[解決済み] Android: AsyncTaskのonPreExecute()にパラメータを渡すにはどうしたらいいですか?

2022-08-29 18:49:28

質問

私は AsyncTask をインナークラスとして実装したロード操作のために使用しています。

onPreExecute() ロードダイアログを表示し、それを再び onPostExecute() . しかし、いくつかの読み込み操作については、それが非常に速く終了することが事前に分かっているので、読み込みダイアログを表示したくありません。

に渡すことができるブール値のパラメータでこれを示したいと思いました。 onPreExecute() に渡せるようにしたかったのですが、どうやら何らかの理由で onPreExecute() はパラメータを取らないようです。

明らかな回避策は、おそらく私のAsyncTaskまたは外側のクラスでメンバーフィールドを作成し、すべてのロード操作の前に設定する必要がありますが、それは非常にエレガントではないようです。これを行うためのより良い方法はありますか?

どのように解決するのですか?

コンストラクタをオーバーライドすればよいでしょう。以下のような感じです。

private class MyAsyncTask extends AsyncTask<Void, Void, Void> {

    public MyAsyncTask(boolean showLoading) {
        super();
        // do stuff
    }

    // doInBackground() et al.
}

そして、タスクを呼び出すときに、次のようにします。

new MyAsyncTask(true).execute(maybe_other_params);


編集してください。 というのは、メンバ変数を作るよりも、タスクの呼び出しが単純になるので便利だからです。上のコードと比較してみてください。

MyAsyncTask task = new MyAsyncTask();
task.showLoading = false;
task.execute();