1

为了实现提醒,我需要设置一个备忘录,例如:“从今天开始,显示一个备忘录,每个星期五,一个星期是和一个否”所以,我想我可以确定每个备忘录,下一个日期是什么我必须展示它。然后将此日期传递给这样的计时器:

 Timer timer = new Timer();

 timer.schedule(new TimerTask() {

                public void run() {
                    //show my memo    
                     });

                }}, date); // 

假设现在是星期一 26/11/2012 我如何确定第一个星期五发生的时间(根据上述备忘录?

我不确定这种机制是否足够好,如果有人可以建议我另一种方法,我将不胜感激。

4

1 回答 1

3

Timer 不是一个很好的类。你应该看看 AlarmManager 并使用它来安排你的事件。

您可以使用 AlarmManager.set() 设置特定的警报,使用 AlarmManager.setInexactRepeating() 设置在准确性方面具有一定灵活性的重复警报,使用 setRepeating() 设置精确的重复警报。

在所有情况下,您都设置了一个在警报触发时启动的 PendingIntent,并且您的应用程序应该准备好正确处理该意图。

请记住,当 PendingIntent 被触发时,您不一定需要采取行动:您只需检查条件是否正确(例如,您可以添加一些关于此时是否应通知用户的逻辑)。

有关 AlarmManager 和 PendingIntent 的更多信息:

http://developer.android.com/reference/android/app/AlarmManager.html

http://developer.android.com/reference/android/app/PendingIntent.html

另外,请记住,您必须将广播接收器添加到“启动序列完成”事件,以便您可以在设备重新启动后重新安装警报,因为警报不会在重新启动后持续存在。

于 2012-11-26T21:50:58.480 回答