4 шага
Когда выполняется асинхронная задача, задача проходит 4 шага:
onPreExecute (), вызывается в потоке пользовательского интерфейса перед выполнением задачи. Этот шаг обычно используется для настройки задачи, например, показывая индикатор выполнения в пользовательском интерфейсе.
doInBackground (Params ...), вызывается в фоновом потоке сразу после завершения выполнения onPreExecute (). Этот шаг используется для выполнения фоновых вычислений, которые могут занять много времени. Параметры асинхронной задачи передаются на этот шаг. Результат вычисления должен быть возвращен этим шагом и будет возвращен к последнему шагу. Этот шаг также может использовать publishProgress (Progress ...) для публикации одной или нескольких единиц прогресса. Эти значения публикуются в потоке пользовательского интерфейса на шаге onProgressUpdate (Progress ...).
onProgressUpdate (Progress ...), вызывается в потоке пользовательского интерфейса после вызова publishProgress (Progress ...). Время выполнения не определено. Этот метод используется для отображения любой формы прогресса в пользовательском интерфейсе, пока выполняется фоновое вычисление. Например, его можно использовать для анимации индикатора выполнения или отображения журналов в текстовом поле.
onPostExecute (Result), вызывается в потоке пользовательского интерфейса после завершения фоновых вычислений. Результат вычисления фона передается на этот шаг в качестве параметра.
пример
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
Общие типы AsyncTask
Три типа, используемые асинхронной задачей, следующие:
Params, тип параметров, отправляемых заданию при выполнении.
Progress, тип единиц прогресса, опубликованных во время фонового вычисления.
Result, тип результата вычисления фона.