Android 安卓如何设置AlarmManager闹钟每天在一个随机的小时响?

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

到目前为止,每天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 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:我不知道“足够的随机性”是什么意思。当然,这并不能保证您每个日历日只能获得一项活动。