Как остановить службу Android ТОЛЬКО в том случае, если в моем приложении не запущены другие действия? - PullRequest
3 голосов
/ 14 марта 2010

Есть ли способ проверить, есть ли какие-либо другие действия в моем приложении, все еще живые? Я пытаюсь остановить службу в методе onDestroy, но хочу сделать это только в том случае, если в моем приложении нет других операций в стеке.

У меня есть вызов, чтобы остановить службу в методе onDestroy () основного действия. Это прекрасно работает, за исключением того, что если пользователь запускает мое приложение, затем запускает несколько действий в моем приложении, затем нажимает на домашний экран и перезапускает мое приложение, они подрывают мой заказ, и основная активность теперь будет выше других операций моего приложения. Из этого состояния, если они нажмут кнопку «Назад» и выйдут из моего домашнего экрана, они вызовут метод onDestroy () и убьют службу, даже если в стеке открыты другие действия. Я хочу избежать этого, остановив службу ТОЛЬКО, если я уверен, что в стеке нет других моих открытых действий. Возможно ли это?

1 Ответ

16 голосов
/ 14 марта 2010

Как я могу запустить сервис, который будет продолжайте бежать, пока любой из моих деятельность приложения по-прежнему на стека, но будет остановлен, когда ни один остаются

Не используйте startService() и stopService(). Вместо этого используйте bindService() и unbindService(), даже если вам не нужно связанное соединение. Bind / unbind считается ссылкой. Если вы звоните bindService() с флагом BIND_AUTO_CREATE, первый bindService() вызовет ваш сервис. Затем, когда все bindService() вызовы будут соответствовать unbindService() вызовам, Android автоматически отключит ваш сервис.

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