在我的项目中,我有一个连接到 HTTP 以查看它是否在线的服务。一切都很好,它确实连接。
问题是我的设备何时进入睡眠状态。
我使用 AlarmManager 触发检查事件,使用 RTC_WAKEUP,这样即使屏幕关闭,进程也会运行......
问题是这并没有真正发生。我创建了一个 Logging Method 来查看我的应用程序幕后发生的事情。
我记录每一步,写下它发生的时间,看看事情发生的时间和方式。
当我将设备设置为睡眠并在几分钟后返回时,我可以看到警报仅在我唤醒设备时触发,而不是在它处于睡眠状态时触发。
这是我创建警报的代码:
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;
}