我有一个应用程序,允许用户设置重复出现的警报。在一个片段中,他们可以从TimePicker中选择一个时间,并设置开关,以便他们想要闹钟发生的那一天,即周一,周三,周五。
我将TimePicker中的时间(以毫秒为单位)以及他们选择的日期保存为Alarm对象中的字符串,如下所示。
public class Alarm extends RealmObject{
@PrimaryKey
private int id;
private Long time;
private String title;
private String dayOfWeek;}
我试图确定的是我如何根据他们想要安排的日期计算未来日期。例如,如果今天是星期一并且他们想要为周一,周三和周五安排警报,我会保存一个警报对象,其时间为今天,另一个警报对象,时间为今天+ 2天,最后一个警报对象+ 4天
然而,问题是这种变化基于今天的哪一天。如果今天是星期二,那么我需要安排警报+ 1天,+ 3天和+ 6天。什么是计算这一天抵消的最简单方法?
答案 0 :(得分:0)
如果我理解你的问题,我会考虑添加用户共享偏好(http://developer.android.com/reference/android/content/SharedPreferences.html)
包含字符串alarmDaysOfWeek =“周一,周三,周五”或任何基于用户输入的值。
然后,您将实现一个服务,该服务在用户的SharedPreferences中针对alarmDaysOfWeek检查当前星期几,并在匹配时发出警报。
答案 1 :(得分:0)
只是一个建议: -
为每天和发生警报(服务,BroadcastReceiver)设置警报,然后检查它是否有今天的事情(作为同等用户的选择)或者什么也不做。
通过以上方式,您不需要计算+1或+2。
答案 2 :(得分:0)
我能够通过捕获用户选择的那一天然后在日历对象上设置星期几来解决这个问题,比如newAlarm.setDayOfWeek(x.getDayOfWeek),然后根据它设置警报对象的时间。这种方式用户选择过去的时间,即如果今天是星期二并且他们为星期一设置警报,则它实际上将设置过去的日历对象时间。然后当警报被安排时,它会立即开火,我可以将其重新安排在+7天或下周一。