У меня есть фоновый сервис, выполняющий некоторую работу - поиск местоположения пользователя по интервалу (запущен с startService
). Как только произойдет специальное условие, я хотел бы сделать следующее:Либо показать уведомление, либо отреагировать в приложении
- Если приложение находится на переднем плане, начните конкретную операцию.
- Если приложение не находится на переднем плане или закрыто, покажите уведомление, которое начнет выполнять требуемую активность при нажатии.
Я знаю, как показать уведомление и как намерение дескриптора с сервера с широковещательным приемником, например. Но как я могу определить, находится ли мое приложение на переднем плане? Или, может быть, вы можете предложить полное лучшее решение?
Несколько дополнительных вопросов. Могу ли я быть уверенным, что статическое поле распределяется между областями приложения и срока службы? Что делать, если приложение полностью закрыто, но работает? И что, если приложение разбилось? Хорошая идея делает действия, связанные с открытым приложением в широковещательном приемнике? –
Я также добавил подход на основе ActivityManager. Что касается ваших вопросов: вы можете использовать подкласс объекта 'Application', если ваше приложение использует любое, поскольку у вас всегда есть один объект приложения для каждого приложения. В качестве альтернативы вы можете оставить свой счетчик в Singleton, но, пожалуйста, [см. Этот вопрос] (http://stackoverflow.com/questions/2423622/volatile-vs-static-in-java), если вы используете Threads в своем приложении. –
Один объект приложения для каждого приложения не применяется, если вы используете несколько процессов. Те же самые статические объекты будут доступны между классом приложения и службами, если они находятся в одном процессе. Если служба в том же процессе, что и приложение запущена, приложение также будет запущено.Ответ на широковещательные сообщения является хорошим, но должен знать о проблемах с безопасностью, а также обратный вызов должен отвечать в течение 5 секунд, поэтому нужно передать любую тяжелую работу на службу – FunkTheMonk