带有RTC_WAKEUP的AlarmManager不会唤醒设备

时间:2013-03-28 19:35:09

标签: android android-service android-alarms

在我的项目中,我有一个连接到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; 
}

1 个答案:

答案 0 :(得分:0)

我认为问题是我自己的设备。 这是一款Zenithink C93平板电脑。 我在摩托罗拉Defy上测试了相同的代码,它运行得很好。