Диспетчер аварийных сигналов, использующий wakelocks для обеспечения выполнения всех кодов - PullRequest
0 голосов
/ 09 мая 2011

Я смотрю на использование Alarm Manager и читаю это в документации для разработчиков, чего я не совсем понимаю.

"If your alarm receiver called Context.startService(),
it is possible that the phone will sleep before the
requested service is launched. To prevent this, your
BroadcastReceiver and Service will need to implement a
separate wake lock policy to ensure that the phone
continues running until the service becomes available."

Я специально спрашиваю, в каких ситуациях телефон может бездействовать до запуска службы (поскольку эту часть я не понимаю)? Зависит ли это от того, насколько быстро телефон может выполнять операторы? то есть. он вызывает startService (), который открывает другой поток, поэтому исходный поток может завершить свою работу до того, как служба станет доступной?

Спасибо

1 Ответ

1 голос
/ 12 февраля 2012

Если вы запускаете службу с BroadcastReceiver, вы гарантированно только то, что устройство не будет бездействовать во время onReceive () приемника. Согласно этот вопрос , startService () является асинхронным, что означает, что он не будет блокировать завершение onReceive () во время запуска службы. Поэтому, если вам нужно убедиться, что служба запускается, вам нужно реализовать свой собственный WakeLock.

...