Я смущенно о поведении AlarmManager
. Делает ли AlarmManager
держать замок CPU
все время? В андроиде ЭТАЛ.ЗНАЧ сайте они сказалиПутаница о блокировке процессора AlarmManager в android
Менеджер Alarm удерживает блокировку бодрствования процессора до тех пор, как метод ТРЕВОГИ приемника OnReceive() выполняет
С другой стороны RTC_WAKEUP сказала, что
время сигнала в System.currentTimeMillis() (настенные часы время в UTC), который разбудит устройство, когда оно идет от
Предположим, что у моего устройства нет другой задачи вместо моей. CPU
может заснуть после завершения моей работы. Тогда что будет в следующей ситуации?
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 10, pi);
//pi is pendingIntent.
Ситуация 1:
CPU go to sleep and wake up after 10 minutes. [I will acquire wake lock in intent class]
Ситуация 2:
AlarmManager holds CPU for next 10 minutes. It's a repeating task, so AlarmManager holds the CPU all the time until it canceled.
РЕДАКТИРОВАТЬ
Есть ли разница между следующими кодами псевдо
acquire_cpu_wakelock();
while(!canceled)
{
sleep(10); //minutes [update]
finish_task();
}
release_cpu_wakelock();
и
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 10, pi);
Вам, вероятно, нужно более точно и буквально прочитать первое цитируемое утверждение: «в то время как приемник ** onReceive() ** приемника сигнала тревоги выполняет« - это не произойдет »до тех пор, пока« будильник »не загорится», и будет быть завершен, когда этот метод события возвращается. –
Благодарим за быстрый ответ. Как насчет RTC_WAKEUP? – shantanu
'до тех пор, пока метод onReceive() приемника сигнала тревоги выполняет во время исполнения' onReceive'. – njzk2