Android: Как я могу передать параметры onPreExecute AsyncTask ()?

Я использую AsyncTask для загрузки операций, которые я реализовал как внутренний класс.

В onPreExecute() Я показываю загружающееся диалоговое окно, в котором я затем скрываюсь снова onPostExecute(). Но для некоторых операций загрузки я знаю заранее, что они закончат очень быстро, таким образом, я не захочу отображать загружающееся диалоговое окно.

Я хотел указать на это булевым параметром, которому я мог передать onPreExecute() но по-видимому по некоторым причинам onPreExecute() не берет параметров.

Очевидное обходное решение должно было бы, вероятно, создать членское поле в моем AsyncTask или во внешнем классе, который я должен буду установить перед каждой операцией загрузки, но это не кажется очень изящным. Существует ли лучший способ сделать это?

113
задан SSH 30 October 2015 в 11:31
поделиться

1 ответ

Вы можете переопределить конструктор. Что-то вроде:

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

Edit:Это более полезно, чем создание переменных-членов, поскольку упрощает вызов задачи. Сравните приведенный выше код с:

MyAsyncTask task = new MyAsyncTask();
task.showLoading = false;
task.execute();
228
ответ дан 24 November 2019 в 02:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: