现在,我正在设置这样的警报:
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
timedate = cal.getTime();
//convert date to milis
long timeInMilis = (timedate.getTime());
//Set Alarm to Repeat
manager.setRepeating(AlarmManager.RTC_WAKEUP, timeInMilis, interval, pendingIntent);
不幸的是,重复的预定时间是不准确的,我读到他们可能在整个时间间隔内不准确!
所以,我想切换到设置一个确切的重复警报。我的设备至少需要最新的API 19 / Android 4.4,因此我无法使用setRepeating。
我可以做些什么来设置确切的重复闹钟?
答案 0 :(得分:30)
不幸的是,重复的预定时间是不准确的,我读到他们可能在整个时间间隔内不准确!
如果targetSdkVersion
为19或更高,则为是。
我可以做些什么来设置确切的重复闹钟?
使用setExact()
来控制您的初始延迟。然后,作为处理该事件的工作的一部分,使用setExact()
在下一个所需时间获得控制权。 IOW,你自己做“重复”部分。
是的,这很烦人。
引导开发者不使用精确的重复警报是故意的,因为那些电池比他们不精确的兄弟更糟糕。如果用户会感知到不准确的行为并且不会欣赏它,请随意使用setExact()
在用户需要时发出警报。但是,如果用户不会察觉到不准确的行为,请使用不准确的警报,因为用户可能会注意到您的确切警报对电池的影响。