Диспетчер сигналов тревоги, использующий пробуждения для обеспечения выполнения всего кода

Я рассматриваю возможность использования 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(), который открывает другой поток, и поэтому исходный поток может завершить свою работу до того, как служба станет доступной?

Спасибо


person ataulm    schedule 09.05.2011    source источник


Ответы (1)


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

person user1189117    schedule 12.02.2012