У меня есть служба, которая началась с startService и привязана к BIND_AutoCreate, я хочу, чтобы моя служба запускалась автоматически, когда андроид убил ее для низкой памяти, как я могу ее внедрить?
благодаря'
Если служба создана из-за привязки BIND_AUTO_CREATE, она будет остановлена, если у нее нет связанных с ней действий.
В соответствии с документами (жизненным циклом службы) вы можете запускать явным образом службу, а затем связываться с флагом автосоздания.
Если вы явно запускаете службу как STICKY (возвращая START_STICKY в свой метод * onStartCommand *, она будет автоматически перезагружаться, когда система будет иметь больше ресурсов.
Вам необходимо зарегистрировать широковещательный приемник для ACTION_DEVICE_STORAGE_OK
что указывает на ACTION_DEVICE_STORAGE_OK
что состояние с низкой памятью на устройстве больше не существует. В onReceive()
проверьте свою службу, если она остановлена, запустите ее.
Действие DEVICE_STORAGE_OK
передается, когда устройство восстановилось из состояния низкой памяти (внутренняя память). Я думаю, что это идеальное событие для вас, чтобы проверить, был ли ваш сервис убит во время восстановления памяти системой, и запустите его, если он был убит.
Пожалуйста, прочитайте здесь документацию.