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

Другие вопросы по тегам