AlarmManager不是在睡眠模式下工作(AlarmManager not working in

2019-06-23 17:35发布

我已经设置了重复时间AlarmManagr。 这里是我的方法,通过它,我将它设置:

public void setAlarmManager(Context context, Intent intent) {           
    PendingIntent pendingIntent;
    pendingIntent  = PendingIntent.getService(context, 0, intent, 0);               
    AlarmManager alarmManager =
        (AlarmManager)context.getSystemService(context.ALARM_SERVICE);

    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.add(Calendar.SECOND, 10);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 
                              calendar.getTimeInMillis(), 
                              40000, pendingIntent);                   
}

这工作时,我的设备进入睡眠模式的报警停止工作,直到我醒来手动我的设备,除了罚款。 唤醒设备后,AlarmManager重新开始工作。

如何让管理者即使在睡眠模式下运行?

Answer 1:

那是因为你PendingIntent是调用一个服务,而不是一个BroadcastReceiver ,这意味着该设备可以回去就会在创建服务之前睡觉。 如果你到一个广播接收器它“应该”保持清醒,直到的onReceive是完整的,这意味着你将有时间来获得激活锁定并启动服务广播接收器的。 即使你移动到一个BroadcastReceiver ,你会希望获得一个激活锁定,直到你完成处理,如果它要采取超过10秒(这是一个极限BroadcastReceiver )。

这是从AlarmManager的Android文档的第2款采取:

” ......如果你的报警接收器,称为Context.startService()有可能手机会睡所请求的服务推出之前,为了防止这种情况,你的广播接收器和服务将需要实现一个单独的唤醒锁定策略,以确保手机继续运行,直到服务可用“。



文章来源: AlarmManager not working in sleep mode