我正在设计一个包含时间表的应用程序,当用户向其添加事件时,他可以定义是否“每周”,“每2周”重复一次,如果它每周都很好但是当它是,让我们说“每月一次”,我必须计算自用户添加该事件以来的时间并在一周后删除该事件,然后在3周内将其添加回来。
根据我的研究,我可以使用AlarmManager,Handler或Timer。它必须在应用程序未运行时更新,但在手机处于睡眠状态时不需要更新,我觉得AlarmManager对于这个简单的任务来说太过分了,但是使用Timer或Handler来计算自从用户添加了一个我需要的事件(time passed since the user added the event) + (time the phone was asleep)
,我不知道该怎么做或者是否可能
AlarmManager,Timer,Handler或其他?
答案 0 :(得分:2)
对于您的情况,您绝对应该使用[_queue listenFeedbackUpdatesWithBlock:^(AFSoundItem *item) {
NSLog(@"Item duration: %ld - time elapsed: %ld", (long)item.duration, (long)item.timePlayed);
} andFinishedBlock:^(AFSoundItem *nextItem) {
NSLog(@"Finished item, next one is %@", nextItem.title);
}];
。
运行AlarmManager
和Handler
只能在短时间内使用。因此,您确定应用程序仍在运行。
Timer
应该用于在应用程序的生命周期之外执行操作,这在您的应用程序中就是这种情况。
请参阅从training docs
复制的以下注释注意:对于保证在应用程序生命周期内发生的计时操作,请考虑将Handler类与Timer和Thread结合使用。这种方法使Android能够更好地控制系统资源。
答案 1 :(得分:1)
你应该使用AlarmManager(这是AlarmManager的全部目的)
如果您的应用未运行,您的计时器将无法运行,那么如果用户未打开该应用,您预计下周会如何运行?