Intereting Posts
Студия Android не может разрешить com.google.android.gms.location.places.AutocompleteFilter PerformItemClick в ListView не выделяет элемент Robolectric (android): Тестирование событий? Как включить строки из другого модуля в Android Studio Как перейти от одного фрагмента к другому фрагменту при щелчке ImageView в Android? Как вызвать setListAdapter в android Показывать выпадающий список недавно введенного текста при нажатии на поле редактирования android. Разница между Wakelock и FLAG_KEEP_SCREEN_ON? Могу ли я копировать между CouchBase на Android и Couch DB, работающим в Linux? Извлечь строку из EditText Разработка с помощью LibVLC для Android в Windows Как получить уровень сигнала подключенного WiFi-андроида? Сеть сканирования для определенного MAC-адреса – Android Google Maps отлично работает на Android, но я все равно получаю сообщение об ошибке «Не удалось найти класс« maps.ik », на который ссылается метод methods.z.ag.a" Пользовательский класс приложения в проекте библиотеки

Android IntentService предоставляет данные обратно на активность

У меня есть активность (ListActivity), в которой, если пользователь нажимает кнопку, я начинаю намерение «IntentService», которое в основном делает вызов REST веб-службе и собирает данные. Моя проблема заключается в том, что после завершения службы я заполняю список элементов в Activity, который является просто статическим var. Тем не менее, у меня возникают проблемы с отправкой listadaptor, чтобы попросить его обновить представление по мере изменения данных. Может ли кто-нибудь сказать мне, как я могу «уведомлять» об активности для обновления, поскольку IntentService выполнил эту задачу?

Если вы выполняете вызов REST, я бы предложил использовать IntentService вместо AsyncTask. AsyncTask выглядит красиво и полезно, но ему нужно много заботиться о том, чтобы не утечка контекста и возврат результата к активности, которая может быть также давно ушла, что делает ее не так просто для правильного использования.

Пожалуйста, смотрите эту презентацию для очень полезных рекомендаций:

http://www.youtube.com/watch?v=xHXn3Kg2IQE

EDIT: чтобы отправить результат, вы можете включить в свой ResultReceiver метод ResultReceiver в котором вы запустите IntentService, и сообщите об активности (и обработайте обновление адаптера там) с помощью .send ()

Что касается обновления ListAdapter, это действительно зависит от того, какой тип вы используете. Если это простой адаптер, вы можете поменять его, используя

 getListView().setAdapter(adapter) 

Но вы бы намного лучше с CursorAdapter и просто CursorAdapter

 context.getContentResolver().notifyChange(uri, null); 

Где контекст – это контекст вашего IntentService.

Надеюсь, это поможет!