Android 计算重复AlarmManager的启动时间

Android 计算重复AlarmManager的启动时间,android,time,alarmmanager,repeatingalarm,Android,Time,Alarmmanager,Repeatingalarm,我正在开发一个使用AlarmManager的Android应用程序,如下所示: Long startTime=Calendar.getInstance().getTimeInMillis(); 报警。设置重复( AlarmManager.RTC_唤醒, 开始的时候, 15* 60 * 1000, getBroadcast(this,1,intent,PendingIntent.FLAG_UPDATE_CURRENT)); 我想计算开始时间。假设我需要在15分钟后重复运行一些代码,但这15分钟后

我正在开发一个使用AlarmManager的Android应用程序,如下所示:

Long startTime=Calendar.getInstance().getTimeInMillis();
报警。设置重复(
AlarmManager.RTC_唤醒,
开始的时候,
15* 60 * 1000,
getBroadcast(this,1,intent,PendingIntent.FLAG_UPDATE_CURRENT));
我想计算
开始时间
。假设我需要在15分钟后重复运行一些代码,但这15分钟后不应该从现在(当前时间)开始,而应该从下一个时间段开始。每当我启用警报时,它都应该从下一个可用插槽启动警报(这意味着我需要计算启动时间)

示例1:如果当前时间为10:8,则第一次运行应在10:15

例2:如果是10:17,那么第一次跑步应该是10:30

例3:如果是10:38,那么第一次跑步应该在10:45

因为AlarmManager以毫秒为单位获取2个时间参数,第一个参数是何时启动报警,第二个参数是以毫秒(15分钟)为单位的重复时间

如果仍然不清楚,我会说,当设备的分钟数为以下值之一时,我需要运行代码:
00、15、30、45,而不考虑设备的小时值。

首先,请记住,Android 6.0+上的打瞌睡模式和应用程序待机将意味着您无法在需要时始终获得控制权


也就是说,您需要调整
startTime
。在其上调用
get(Calendar.MINUTE)
以获取当前分钟数。确定你需要增加多少分钟才能到达下一刻钟。然后,调用
add(Calendar.MINUTE,…)
,其中
是您需要添加的金额,以获取下一刻钟的分钟值。使用
add()。实际上我在寻找一些等式。它可以告诉我将哪个插槽(在本例中为季度)设置为开始时间。我可以使用分钟的if条件来决定季度,但时间间隔不是静态的,它可以是(15、30、60、动态的)。若可以应用条件,那个就更好了,但解决方案必须是动态的。@PHPAvenger:
if(分钟)