Мне нужно загрузить данные из базы данных в ArrayList, вo втором потоке, сопровождая выгрузку DialogFragment'ом. При помощи чего это можно сделать?
Хотел сделать через IntentServise, но он не дружит с List'ами (насколько я понял). Проповал запустить выгрузку во втором потоке, остановивши первый, но ProgressDialog спит с основным потоком. Даже пробовал сделать все в основном потоке, но ProgressDialog не успевает запуститься и зависает с основным потоком...
Ответ
Делается это через AsyncTask, примерная схема такая:
Создаем класс наследующий от AsyncTask
В конструкторе класса создаем ProgressDialog
В методе onPreExecute() показываем диалог progressDialog.show(), проводим другие мероприятия - подготовку у чтению БД и проч.
В методе doInBackground() организуем чтение данных из БД в цикле и в ходе чтения вызываем this.publishProgress(), который будет вызывать onProgressUpdate() (см. ниже)
В методе onProgressUpdate() увеличиваем счетчик progressDialog.setProgress()
В методе onPostExecute() закрываем счетчик progressDialog.dismiss()
Комментариев нет:
Отправить комментарий