我有一个每15分钟重复一次闹钟的功能。
问题是它每秒都在发射。
我在我的主要活动中有以下内容:
AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intentn = new Intent(context, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intentn, 0);
Calendar time = Calendar.getInstance();
time.setTimeInMillis(System.currentTimeMillis());
if(android.os.Build.VERSION.SDK_INT>=23) {
alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,1000*900, pendingIntent);
}
else{
alarmMgr.setExact(AlarmManager.RTC_WAKEUP, 1000*900, pendingIntent);
}我在我的AlarmReceiver onReceive()中重复了上面的相同操作,以便在它触发后再次设置它。
有什么想法是错的吗?我该怎么做才能让它正确地重复呢?
发布于 2019-05-22 07:12:34
首先,在不添加当前时间的情况下设置闹钟。如下所示:
...
alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, 1000*900, pendingIntent);
...
alarmMgr.setExact(AlarmManager.RTC_WAKEUP, 1000*900, pendingIntent);
...应该改为
...
alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, time + 1000*900, pendingIntent);
...
alarmMgr.setExact(AlarmManager.RTC_WAKEUP, time + 1000*900, pendingIntent);
...其次,有一个函数可以完成我认为您在这里要完成的任务(设置重复闹钟)。参见setRepeating()。
发布于 2019-05-22 15:15:53
尝试使用android worker manager,因为它也是在打瞌睡模式下工作。https://developer.android.com/reference/androidx/work/PeriodicWorkRequest#min_periodic_interval_millis
https://stackoverflow.com/questions/56247338
复制相似问题