我正在使用一个使用AlarmManager的Android应用程序,如下所示:
Long startTime = Calendar.getInstance().getTimeInMillis();
alarm.setRepeating(
AlarmManager.RTC_WAKEUP,
startTime,
15* 60 * 1000,
PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT));
我想计算startTime
。让我们说我需要在15分钟后重复运行一些代码,但是15分钟之后不应该从现在开始(当前时间),而是从下一个时段开始。每当我启用警报时,它应该从下一个可用插槽开始(这意味着我需要计算开始时间)。
示例1:如果当前时间是10:8,则第一次运行应该是10:15。
示例2:如果是10:17,那么首先应该是10:30。
示例3:如果是10:38,则第一次运行应该是10:45。
由于AlarmManager需要2个时间参数(以毫秒为单位),第一个参数用于启动警报,第二个用作重复时间(以毫秒为单位)(15分钟)。
如果它仍然不清楚,那么我会说我需要在设备的分钟数是以下值之一时运行我的代码: 00,15,30,45,与设备的小时值无关。
答案 0 :(得分:0)
首先,请记住Android 6.0+上的打盹模式和应用程序待机状态意味着您无法随时获得控制权。
话虽如此,您需要调整startTime
。在其上调用get(Calendar.MINUTE)
以获取当前分钟数。确定需要添加多少分钟才能到达下一个四分之一小时。然后,请致电add(Calendar.MINUTE, ...)
,其中...
是您需要添加的金额,以便将分钟值提升到下一个四分之一小时。使用add()
将根据需要处理增加小时,天等。