В моем проекте у меня есть служба, которая подключается к HTTP, чтобы проверить, находится ли она в сети. Все отлично работает, подключается.
Проблема в том, что мое устройство переходит в спящий режим.
Я использую AlarmManager для запуска событий проверки, используя RTC_WAKEUP, чтобы процесс выполнялся даже при выключенном экране...
Проблема в том, что на самом деле этого не происходит. Я создал метод ведения журнала, чтобы увидеть, что происходит за кулисами моего приложения.
Я записываю каждый шаг, записывая время, когда это произошло, чтобы увидеть, когда и как все происходит.
Когда я перевожу свое устройство в спящий режим и возвращаюсь через несколько минут, я вижу, что будильник срабатывает ТОЛЬКО тогда, когда я просыпаю устройство, а не когда оно спит.
Вот код, в котором я создаю будильник:
public static void AddAlarm(Context pContext, Server pServer)
{
// Create pending with intent and server object with a helper that creates my pending intent.
PendingIntent pending = IntentGenerator.GetPendingIntentForAlarm(pContext,pServer.ServerId);
// Get alarm manager
AlarmManager alarm = (AlarmManager)pContext.getSystemService("alarm");
// Get current time to start now.
long startNow = new Date().getTime()-10;
// Set repeating alarm with current time to start, and interval.
alarm.setRepeating(AlarmManager.RTC_WAKEUP ,startNow, pServer.GetIntervalInMilliseconds(), pending);
}
И если вам интересно, как я создаю ожидающее намерение:
public static Intent GetIntentForService(Context pContext, int pServerId)
{
// Comienzo la alarma.
Intent retVal = new Intent(pContext, ServerStatusCheckService.class);
retVal.putExtra("SERVER_ID", pServerId);
return retVal;
}