Как вы можете определить, является ли какая-либо активность в вашем приложении заранее обоснованной? - PullRequest
1 голос
/ 11 марта 2010

У меня есть приложение для Android с периодическим фоновым обслуживанием. Я хочу, чтобы эта служба реагировала по-разному в зависимости от того, открыты ли какие-либо действия в моем приложении. Проблема заключается в том, что служба просто продолжает работать через AlarmManager, что делает ее своего рода отдельной «дорожкой» от операций, поэтому я не знаю, открыто ли приложение при запуске.

Лучшее решение, которое я могу придумать, - это включать / выключать логическое значение при каждом вызове onResume () или onPause () во всех моих действиях, но это кажется большой работой. Есть ли более простое, более элегантное решение?

1 Ответ

1 голос
/ 11 марта 2010

Есть ли проще, элегантнее решение?

Ну, это немного зависит от того, что означает "реагировать по-другому".

Предположим, вы хотите поднять Notification, если ваши действия не на переднем плане, но вы хотите открыть диалоговое окно, если действие находится на переднем плане.

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

Вы можете выполнить то же самое с помощью трансляции Intent (зарегистрировать / отменить регистрацию получателя в действии в onResume() / onPause()), если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...