Rey*_*ohn 6 android alarmmanager android-alarms
我已经设置了一个重复时间的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);
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,除非我的设备进入睡眠模式时警报停止工作,直到我手动唤醒我的设备.唤醒设备后,AlarmManager再次开始工作.
如何让管理员即使在睡眠模式下也能运行?
小智 8
这是因为您PendingIntent正在调用服务而不是服务,BroadcastReceiver这意味着设备可以在您创建服务之前重新进入休眠状态.如果您转移到广播接收器,它"应该"保持清醒,直到onReceive完成BroadcastReceiver,这意味着您将有时间获取唤醒锁并开始服务.即使你移动到a,BroadcastReceiver你也会想要获得一个唤醒锁,直到你完成你的处理,如果它需要超过10秒(这是一个限制BroadcastReceiver).
这取自AlarmManager的android文档的第2段:
"...如果你的闹钟接收器被叫Context.startService(),那么手机可能会在所请求的服务启动之前就睡觉.为了防止这种情况,你的BroadcastReceiver和服务需要实施一个单独的唤醒锁定策略,以确保手机继续运行直到服务变得可用."
| 归档时间: |
|
| 查看次数: |
5638 次 |
| 最近记录: |