Как вы посоветовали мне использовать AlarmManager вместо Timer, я думал, программа запустится.
Но, к сожалению, это не так. Или, лучше сказать, не всегда ...AlarmManager не работает так, как ожидалось
Это мой код:
long millis = 0;
this.alarmMgr = (AlarmManager)this.main.getSystemService(Context.ALARM_SERVICE);
this.checkPendingIntent = PendingIntent.getBroadcast(this.main, 0,
new Intent(this.main, AlarmReceiver.class), 0);
if(frequency.compareTo("1HOUR") == 0)
millis = 3600 * 1000;
if(frequency.compareTo("12HOUR") == 0)
millis = 12 * 3600 * 1000;
if(frequency.compareTo("1DAY") == 0)
millis = 24 * 3600 * 1000;
if(frequency.compareTo("1WEEK") == 0)
millis = 7 * 24 * 3600 * 1000;
this.alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(), millis, this.checkPendingIntent);
Я ожидаю, что в ожидании намерения (AlarmReceiver) будет вызываться каждые X миллисекунд, но это не так.
В журналах моего телефона я вижу, что он не будет вызываться, а в журнале моего сервера (получатель отправляет HTTP-запрос), что запросы не принимаются.
ОЧЕНЬ странно, что когда-то оно работает, но я не могу воспроизвести ситуацию.
Может ли кто-нибудь сказать мне, что я делаю неправильно?
Большое спасибо
Luca Bertoncello
Спасибо, я попробую. Не могли бы вы просто объяснить мне, почему вы используете setTimeInMillis для календаря, а затем снова calendar.set? –
Ну, похоже, это сработало ... Я проверю ваш пример сегодня и завтра, ожидая запроса каждый час. Большое спасибо –
@LucaBertoncello Вы можете установить будильник, а затем изменить время установки. Когда придет время будильника, будильник будет запущен. Пожалуйста, если вы найдете мой ответ полезным, проголосуйте за него и примите его в качестве ответа. –