Если вы хотите показать прогресс во время фонового процесса, ни один из предыдущих ответов не дает подсказки: когда вызывается OnPostExecute
, все заканчивается, поэтому нет необходимости обновлять статус загрузки.
Итак, вы должны переопределить onProgressUpdate
в своей AsyncTask и быть уверенным, что второй объект не пустота, а целое число или строка, которая читается onProgressUpdate
. Например, используя String:
public class MyAsyncTask extends AsyncTask<Void, String, Void> {
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
if (values != null && values.length > 0) {
//Your View attribute object in the activity
// already initialized in the onCreate!
mStatusMessageView.setText(values[0]);
}
}
}
Чем в фоновом методе вы вызываете publishProgress(value as String)
, который автоматически вызывает onProgressUpdate
метод, который использует основной поток пользовательского интерфейса:
@Override
protected Boolean doInBackground(Void... params) {
your code...
publishProgress("My % status...");
your code...
publishProgress("Done!");
}
В общем, когда вы объявляете AsyncTask, вы должны указать классы <Params, Progress, Result>
, которые передаются основным методам, это могут быть ваши собственные классы или просто классы Java:
doInBackground(Params... params)
onProgressUpdate(Progress... value)
onPostExecute(Result... success)