Запускать IntentService из Activity и обновлять Activity, когда IntentService завершается

В моем приложении для Android у меня есть простой список с адаптером. Есть сложный запрос, который заключается в том, чтобы заполнить представление списка данными. Поэтому я поместил его в IntentService, который работает в другом потоке.

IntentService обычно работает отдельно, сам по себе, просто для запроса некоторых данных и их вставки в базу данных SQLite.

Но теперь я хотел бы иметь следующую возможность:

  1. Действие запускает IntentService с помощью startService ().
  2. IntentService делает свою тяжелую работу.
  3. Когда IntentService завершает свою работу, он должен проинформировать действие о результате, чтобы действие могло быть обновлено для отображения новых данных.

Возможно ли это? Я прочитал много вопросов по этой теме здесь, в Stack Overflow. Но в каждом вопросе было другое решение. Итак, я хочу спросить всех вас: какое решение лучше всего подходит для моей цели?

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

27
задан Community 23 May 2017 в 11:46
поделиться