Обновление активности из службы при активном

У меня есть приложение, в котором я хочу обновить Activity (активность списка, если быть точным), только когда активность из службы находится на переднем плане (активна)

Я могу использовать ListActivity Intent, но проблема в том, что это приводит к активности, даже когда она находится в фоновом режиме.

Я также рассмотрел использование registerDataSetObserver в ListAdapter, но это означает, что курсор должен быть обновлен. Обновление курсора из внешней службы может оказаться невозможным.

Есть ли у нас общее решение?

Ответ 1

Есть ли у нас общее решение для этого

Возможно, дюжина из них. Вот несколько:

  • Регистрируйте объект-слушатель с помощью службы onResume() и удалите его в onPause()
  • Отправьте приватную трансляцию, которую активировали с помощью registerReceiver(), когда она находится на переднем плане
  • Представьте, что действие содержит "ожидающий результат" -стиль PendingIntent для службы
  • Используйте ResultReceiver
  • Используйте ContentProvider, с активностью, удерживающей на Cursor от поставщика, и службой обновления поставщика

Этот набор проектов демонстрирует первые три в контексте удаленных служб.

Ответ 2

Лучшее решение - иметь централизованное место. Я считаю это лучшим решением.  Проверьте это:

нажмите здесь