Страницы

Поиск по вопросам

воскресенье, 12 мая 2019 г.

Как загрузить данные из БД, показывая процесс ProgressDialog'ом

Мне нужно загрузить данные из базы данных в ArrayList, вo втором потоке, сопровождая выгрузку DialogFragment'ом. При помощи чего это можно сделать?

Хотел сделать через IntentServise, но он не дружит с List'ами (насколько я понял). Проповал запустить выгрузку во втором потоке, остановивши первый, но ProgressDialog спит с основным потоком. Даже пробовал сделать все в основном потоке, но ProgressDialog не успевает запуститься и зависает с основным потоком...


Ответ

Делается это через AsyncTask, примерная схема такая:
Создаем класс наследующий от AsyncTask В конструкторе класса создаем ProgressDialog В методе onPreExecute() показываем диалог progressDialog.show(), проводим другие мероприятия - подготовку у чтению БД и проч. В методе doInBackground() организуем чтение данных из БД в цикле и в ходе чтения вызываем this.publishProgress(), который будет вызывать onProgressUpdate() (см. ниже) В методе onProgressUpdate() увеличиваем счетчик progressDialog.setProgress() В методе onPostExecute() закрываем счетчик progressDialog.dismiss()

Комментариев нет:

Отправить комментарий