2016-03-07 2 views
0

У меня есть приложение, которое добавляет тревоги в диспетчер аварийных сигналов. Когда я принудительно закрываю приложение/убиваю приложение с помощью убийцы задачи, похоже, что тревоги тоже умирают. Я думал, что они независимы? У меня также есть будильник, который регулярно проверяет, что моя служба приложений всегда включена ... похоже, что она тоже умирает вместе с приложением.Сигнализации, добавленные в диспетчер аварийной сигнализации, умирают после крушения приложения/силы закрытия?

Это нормальное поведение?

ответ

2

Когда вы принудительно закрываете задачу, она переходит в состояние остановки. Запрещается запускать службы или широковещательные передачи до тех пор, пока активность не будет запущена снова. Это то же самое состояние, что и приложение, которое только что загружено, куда не работают службы или трансляции, пока пользователь не запустит в нем действие.

+0

Я видел сообщения/комментарии, говорящие о том, что один из способов сохранить работу всегда работает с будильником, чтобы проверить, что ваша служба запущена. Если не начать, как это сделать? – yeahman

+0

Это работает, если вы не работаете, потому что вас убили за ресурсы, или если вы разбились. Это не работает для закрытия силы. –

+0

ok thx. Наверное, тогда нет способа добиться этого? – yeahman

0

Да, любые аварийные сигналы для процесса будут отменены.

@CommonsWare объясняет это лучше, чем я могу в этом answer. Он также предлагает жизнеспособное, хотя и не идеальное решение:

вести учет, когда последний произошла ваш сигнал тревоги (например, в SharedPreferences). Когда ваш код запускается (например, активность LAUNCHER начинается с ), проверьте время последней тревоги. Если это было давно, вы, , знаете, что ваши тревоги были очищены, и вам нужно перенести их на .