Что лучше между AlarmManager и Handler + WakeLock? - PullRequest
3 голосов
/ 05 октября 2011

Я использую для своей службы Android обработчик, который повторяет некоторые операции каждые 60 минут (1 час), с PartialWakeLock, чтобы телефон не спал.Но это приводит к большому расходу батареи.

Поэтому решили изучить AlarmManager (я нуб), что кто-то написал здесь , чтобы быть идеальным для такого рода вещей ..

Но теперь, читая в Интернете, я обнаружил, что, кто использует AlarmManager, все еще нужен WakeLock.Это правда?

Каков наилучший способ запустить цикл каждые 60 минут (1 час), не убивая батарею?

Спасибо

PS

AlarmManager Android Developer

Диспетчер аварийных сигналов удерживает активную блокировку процессора , пока выполняется метод onReceive () приемника аварийных сигналов.Это гарантирует, что телефон не будет спать, пока вы не закончили обработку трансляции.Как только onReceive () возвращается, диспетчер тревог снимает эту пробужденную блокировку.Это означает, что телефон в некоторых случаях будет спать, как только ваш метод onReceive () завершится.Если ваш приемник тревоги называется Context.startService (), возможно, что телефон будет находиться в спящем режиме до запуска запрошенной службы.Чтобы предотвратить это, вашему BroadcastReceiver и Service потребуется реализовать отдельную политику блокировки пробуждения, чтобы телефон продолжал работать до тех пор, пока служба не станет доступной.

Но, похоже, янужно 2 wakelock против всего 1 wakelock с использованием обработчика .... это правда?

Ответы [ 3 ]

6 голосов
/ 10 октября 2011

Я сделал много тестов, и это результат:

-Alarm Manager экономит больше батареи, чем использование обработчика + wakelock для длительной работы по времени.

Но вы должны использовать дополнительную блокировку wakeк вашей активности / услуге, запущенной сигналом тревоги, потому что блокировка пробуждения диспетчера тревоги не покрывает ее.

Даже в этом методе используется два WakeLock, батарея кажется более эффективной и с большим сроком службы!Во время тестов (2 дня) AlarmManager использует в 6 раз меньше батареи, чем другой метод .В моем собственном случае ...

Надеюсь, это кому-нибудь поможет!

0 голосов
/ 29 июля 2012

Я не уверен, что это все еще актуально,

, но ответ таков: использование AlarmManager предпочтительнее.Вам нужен только WakeLock, чтобы телефон продолжал работать после того, как AlarmManager разбудил его, чтобы послать Намерение вашему получателю и до тех пор, пока сервис не завершит свою работу.Таким образом, телефон будет активен только на пару миллисекунд, по сравнению с «все время».

0 голосов
/ 05 октября 2011

Я предлагаю вам использовать AlarmManager для обработки событий с интервалом в 1 час.

Поскольку мы не знаем точно, чего вы хотите достичь, мы не можем предоставить более глубокий ответ / предложение извините.

...