Android: рекомендуемый способ сохранить PhoneStateListener навсегда?
Я написал приложение, которое контролирует мой уровень сигнала через PhoneStateListener. Я хочу, чтобы это приложение запускалось во время загрузки и работало вечно.
Мне удалось это сделать следующим образом, но я хотел бы знать, может ли кто-нибудь порекомендовать лучший способ сделать это.
Я зарегистрировал BroadcastReceiver, который работает с BOOT_COMPLETED.
В этом BOOT_COMPLETED BroadcastReceiver я запускаю Сервис.
Сервис запускает мой PhoneStateListener.
В моем BOOT_COMPLETED BroadcastReceiver я также запускаю периодическую тревогу через AlarmManager.setInexactRepeating.
Всякий раз, когда срабатывает этот сигнал тревоги, он проверяет, работает ли моя служба. Если он не работает, он перезапускает мою службу, которая, в свою очередь, перезапускает мой PhoneStateListener.
Кажется, все это работает для меня, но мне интересно, является ли это лучшим и наиболее эффективным способом гарантировать, что PhoneStateListener работает постоянно (или, по крайней мере, большую часть времени).
Возможно, есть лучший способ справиться с этим?
Заранее спасибо.
1 ответ
Вы можете сделать свой сервис приоритетным, в этом случае он вряд ли будет убит (только если текущему приложению требуется больше памяти).
В этом случае ваше приложение должно показывать текущее уведомление пользователю, пока служба находится на переднем плане.
Для этого вы должны позвонить startForeground()
Способ обслуживания, предоставив ему уведомление:
startForeground(ONGOING_NOTIFICATION_ID, notification);
Проверьте для получения дополнительной информации: http://developer.android.com/guide/components/services.html