Android 安卓如何设置AlarmManager闹钟每天在一个随机的小时响?
到目前为止,每天11点,闹钟管理器都会触发如下程序:Android 安卓如何设置AlarmManager闹钟每天在一个随机的小时响?,android,Android,到目前为止,每天11点,闹钟管理器都会触发如下程序: Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 11); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); long alarmT
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
long alarmTime = calendar.getTimeInMillis();
alarmTime = alarmTime + (AlarmManager.INTERVAL_DAY);
Intent intent = new Intent(context, SyncReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1300, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime, AlarmManager.INTERVAL_DAY, pendingIntent);
现在我必须更改此过程,使其每天在一个随机的小时内运行,如何以最少的更改量完成此操作?将
setRepeating()
替换为set()
。在SyncReceiver
中,选择下一个随机小时,然后set()
在该时间触发一个新的警报。谢谢,我会尝试一下,如果第一个随机小时是凌晨2点怎么办。然后警报响了,同步接收器发出一个新的随机信号,说下一个小时是凌晨4点——这将在2小时后消失,而不是在第二天?另外,如果下一个随机小时我是1,会发生什么-闹钟会马上响,而不是在第二天。如何保证每个日历日期只有一个警报?@J.K:您在日期
对象上设置的随机小时是明天,而不是今天。如果我将setRepeating替换为setInexactRepeating,会发生什么情况,这会引入足够的随机性吗?@J.K:我不知道“足够的随机性”是什么意思。当然,这并不能保证您每个日历日只能获得一项活动。