在我的项目中,我有一个连接到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;
}
答案 0 :(得分:0)
我认为问题是我自己的设备。 这是一款Zenithink C93平板电脑。 我在摩托罗拉Defy上测试了相同的代码,它运行得很好。