В моем приложении Android у меня есть простой вид списка с адаптером. Там тяжелый запрос, который должен заполнить представление списка данными. Поэтому я помещаю его в IntentService, который запускается в другом потоке.
IntentService обычно запускается отдельно самостоятельно, просто для запроса некоторых данных и вставки его в базу данных SQLite.
Но теперь я хотел бы иметь следующую возможность:
- Действие запускает IntentService с помощью startService().
- IntentService выполняет свою тяжелую работу.
- Когда IntentService будет завершен, он должен сообщить о действии о результатах, чтобы активность могла быть обновлена, чтобы показать новые данные.
Возможно ли это? Я прочитал много вопросов здесь о переполнении стека по этой теме. Но в каждом вопросе было другое решение. Поэтому я хочу спросить вас всех: какое решение лучше для моей цели?
- Привязка IntentService к Activity не кажется лучшим решением, так как могут возникнуть конфликты с изменениями конфигурации активности и т.д. Правильно?
- В этом сообщении в блоге предлагается использовать AIDL с Parcelables - что звучит очень сложно для меня. Есть более простой способ, не так ли?
- Можно настроить широковещательный приемник в своей активности и запустить эту трансляцию в IntentService, когда она будет завершена.
- Некоторые люди говорят, что вы должны использовать createPendingResult() для передачи PendingIntent в IntentService. Если IntentService обнаруживает, что PendingIntent в своих дополнениях, он использует это для запуска onActivityResult() в Activity. Это выбор?