@Copperfield
Android dude

Как стопудова разбудить телефон из глубокого сна для работы сервиса?

Суть такова: раз в 12 часов должен запуститься сервис, сделать кое-какие вычисления и отправить их на сервак.
Проблема такова: пару раз все отрабатывает отлично, потом глохнет. По логам видно, что не приходит вызов в мой ресивер, который обрабатывает интент AlarmManager и запускает сервис.
Вроде бы сделал все по правилам, чтобы телефон будился. Ниже код. Кто подскажет в чем проблема?

Метод, устанавливающий AlarmManager:
public void startStatisticSender() {
        systemAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
                System.currentTimeMillis() + STATISTIC_SENDER_INTERVAL,
                STATISTIC_SENDER_INTERVAL, createStatisticIntent(STATISTIC_SENDER, KEY_SEND_STATISTIC));
    }

    private PendingIntent createStatisticIntent(int id, String action) {
        Intent intent = new Intent(context, StatisticReceiver.class);
        intent.setAction(action);
        return PendingIntent.getBroadcast(context, id, intent, 0);
    }


Ресивер:
public class StatisticReceiver extends WakefulBroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals(AlarmHelper.KEY_SEND_STATISTIC)) {
            handleSendStatistic(context);
        }
    }

    private void handleSendStatistic(Context context){
        Intent intent = new Intent(context, StatisticService.class);
        intent.setAction(StatisticService.KEY_SEND_STATISTIC);
        startWakefulService(context, intent);
    }
  • Вопрос задан
  • 734 просмотра
Пригласить эксперта
Ответы на вопрос 1
@bimeg
AlarmManager.setRepeating

Note: as of API 19, all repeating alarms are inexact. If your application needs precise delivery times then it must use one-time exact alarms, rescheduling each time as described above. Legacy applications whose targetSdkVersion is earlier than API 19 will continue to have all of their alarms, including repeating alarms, treated as exact.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы