警报管理器现在给我以下消息,可能是因为我开始使用API 23。
03-21 13:00:03.828 754-2170 / system_process W / AlarmManager:可疑短距离5000毫米;扩展到60秒
我要求每个要求的规格间隔5000毫秒。当我在BroadCastReceiver中告诉它5000毫秒时,你怎么告诉它不要把它扩展到60秒?即
private static final long defaultPERIOD = 5000;
@Override
public void onReceive(Context ctxt, Intent i) {
context = ctxt;
scheduleAlarms(ctxt, (long) defaultPERIOD, true);
}
public static void scheduleAlarms(Context ctxt, Long duration, Boolean bactive) {
Log.e("FiveSecondReceivr", "scheduleAlarms duraton: "+duration);
AlarmManager mgr = (AlarmManager) ctxt
.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(ctxt, FiveSecondSchedule.class);
PendingIntent pi = PendingIntent.getService(ctxt, 0, i, 0);
mgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + duration, duration, pi);
if (bactive == false) {
mgr.cancel(pi);
}
}
答案 0 :(得分:1)
警报管理器现在给我以下消息,可能是因为我开始使用API 23。
不,that has been the behavior since API Level 21 (Android 5.1)。
当我在BroadCastReceiver中告诉它5000毫秒时,你怎么告诉它不要把它扩展到60秒?
不要使用“重复”系列方法。使用setExact()
来控制您的工作地点并再次致电setExact()
。这允许您降低到5000毫秒(尽管不低,并且该规则可能会在未来的Android版本中更改)。