相关疑难解决方法(0)

使用AlarmManager.RTC类型计划的PendingIntent仍在睡眠模式下调用

这是我用来为我的小部件设置警报的代码:

 private static void setAlarm(Context context) {
    Intent myIntent = new Intent(context, Widget.class);
    myIntent.setAction(AUTO_UPDATE);
    PendingIntent pendingIntent =
            PendingIntent.getBroadcast(context, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Service.ALARM_SERVICE);
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.add(Calendar.SECOND, 8);
    alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), 8000,
            pendingIntent);
}  
Run Code Online (Sandbox Code Playgroud)

但问题是即使在睡眠模式下,onReceive()仍然会被意图触发.

虽然使用后setInexactRepeating代替setRepeating,调用之间的延迟时间也会上升到在睡眠模式下1分,但是这仍然是电池消耗.

android alarmmanager android-pendingintent

8
推荐指数
1
解决办法
1096
查看次数

在Android上使用RTC闹钟时让手机进入睡眠状态

我一直在使用Android中的警报管理器看到一些奇怪的问题,尽管事实上我正在使用RTC(非唤醒)手机将以正确的重复间隔可靠地发送PendingIntents.

我的测试详情

  • 设备没有充电,只是在我睡觉时坐在我的床头柜上
  • 我的服务在重复间隔(30分钟,我知道极端)的每个时间醒来
  • 该服务将其活动记录在一个文件中,以便我可以在早上阅读它

现在根据我的理解,手机应该睡觉,除非我将其唤醒,并且在手机醒来之前不应发送我的警报.

  • 为什么我的服务正在执行?
  • 如果另一个服务行为不端并使用警报的_WAKEUP变体,我的服务也会唤醒吗?
  • 我可以避免被其他服务唤醒,只是从用户打开屏幕唤醒?

android alarmmanager

6
推荐指数
1
解决办法
2063
查看次数

设备处于休眠状态时,Android AlarmManager RTC不会暂停

我为Android设备写了一个小小部件.

该小部件用于AlarmManager设置定期更新.我正在使用RTC时钟AlarmManager.

根据文档,如果设备处于休眠状态,则RTC时钟不会唤醒设备,下次更新将在设备唤醒时进行.

我有一个小部件的日志文件,显示它何时更新.

即使我没有触摸设备,我仍然会在日志文件中看到更新.

这是为什么?设备不应该睡觉,因此我的小部件不应该更新?

我正在使用System.currentTimeMillis()它的开始时间所以它应该是正确的RTC时钟.

android sleep alarmmanager real-time-clock

2
推荐指数
1
解决办法
1775
查看次数