Может кто-нибудь объяснить, когда и почему мы должны его приобрести?
Вы приобретаете его, когда вам нужно, чтобы ЦП продолжал работать, чтобы выполнить некоторую часть работы.Вы отпускаете его, когда эта работа завершена.
Так, например, предположим, что у вас IntentService
сработало на AlarmManager
.Вы хотите, чтобы IntentService
проверял наличие новых почтовых сообщений для вашего почтового клиента.Вы хотели бы приобрести WakeLock
, чтобы процессор не уснул, пока вы занимаетесь этим, а затем убедитесь, что вы его отпустите.Именно по этой схеме я создал WakefulIntentService
.
Когда система может решить, что служба должна быть приостановлена при выполнении некоторой работы с потоком?
Тот факт, что вы выполняете «некоторую работу с потоком», не имеет значения.Процессор засыпает из-за пользовательской неактивности.Если пользователь не держит устройство в активном состоянии, а вы не поддерживаете его в состоянии сна с WakeLock
, устройство будет засыпать.
Наличие засыпания ЦП очень важно для энергопотребления.Если, скажем, вы решите, что процессор будет работать круглосуточно, батарея разряжается относительно быстро.