Android 设备处于睡眠模式时,AlarmManager.setInexactRepeating是否可以广播意图?

Android 设备处于睡眠模式时,AlarmManager.setInexactRepeating是否可以广播意图?,android,broadcastreceiver,alarmmanager,sleep,Android,Broadcastreceiver,Alarmmanager,Sleep,我有一个非常简单的类,用于设置和取消AlarmManager以广播意图: public class MyIntentsAlarm { public void setAlarm(Context context){ AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Intent i = new Intent("MY_ACTION"); PendingIntent pi =

我有一个非常简单的类,用于设置和取消AlarmManager以广播意图:

public class MyIntentsAlarm {

 public void setAlarm(Context context){
  AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
  Intent i = new Intent("MY_ACTION");
  PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
  am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),5*60*1000L, pi);
 }

 public void cancelAlarm(Context context){
  Intent intent = new Intent("MY_ACTION");
  PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
  AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
  alarmManager.cancel(sender);
 }
}
我调用活动的
onCreate()
方法中的
setAlarm(Context Context)
方法和
onDestroy()中的
cancelAlarm(Context Context)
。然后,在我的活动的
onCreate()
方法中,我注册了一个BroadcastReceiver来监听此AlarmManager广播的意图,并执行一些任务(同时获取唤醒锁以确保任务得到执行):

即使我使用
RTC_WAKEUP
类型并在广播接收器中获取了
WakeLock
,手机处于睡眠模式时,AlarmManager是否可能不广播意图

到目前为止,我在多台设备上重现的经验是,在我的设备处于睡眠模式(我的应用程序在白天不断运行)的第一个晚上,将播放意图,但之后,它再也不会在夜间播放意图

有什么想法吗?

试试这个

     SystemClock.elapsedRealtime()
替换为

    System.currentTimeMillis()

我一定会努力的,但是你能详细解释一下为什么这可能是问题的根源吗?请看,我不应该也将类型更改为
AlarmManager.Appead_REALTIME_WAKEUP
而不是使用
AlarmManager.RTC_WAKEUP
?Appead_REALTIME_WAKEUP:从启动时开始触发警报,RTC_WAKEUP:触发警报根据时钟时间。
    System.currentTimeMillis()