Есть ли проще, элегантнее
решение?
Ну, это немного зависит от того, что означает "реагировать по-другому".
Предположим, вы хотите поднять Notification
, если ваши действия не на переднем плане, но вы хотите открыть диалоговое окно, если действие находится на переднем плане.
В этом случае вам все равно понадобится какой-то путь связи от сервиса к активности. Итак, зарегистрируйте обратный вызов (предоставляемый действием) в сервисе в onResume()
и отмените его регистрацию в onPause()
. Ваш сервис использует обратный вызов, если таковой существует; если обратного вызова нет, он вызывает Notification
.
Вы можете выполнить то же самое с помощью трансляции Intent
(зарегистрировать / отменить регистрацию получателя в действии в onResume()
/ onPause()
), если хотите.