В идеале у вас нет работающей службы.Службы должны находиться в памяти только тогда, когда они что-то делают, и, скорее всего, ваш код ничего не сделает, когда придет SMS.
При этом ваш получатель может позвонить startService()
.Это передает Intent
в onStartCommand()
службы, независимо от того, запущена она или нет.В идеале, ваша служба - это IntentService
, предназначенная для работы с шаблоном команды и для ее завершения после обработки команды.
Кроме того, поскольку SMS-сообщения могут поступать, когда устройство спит,вероятно, потребуется использовать WakeLock
, чтобы устройство оставалось в активном состоянии достаточно долго, чтобы управление могло перейти к службе и чтобы служба выполняла все, что она делает.Одним из подходов для этого является использование моего WakefulIntentService
, который обернет шаблон IntentService
+ WakeLock
.