我正在构建一个提醒应用程序,用户将事件输入到SQLite数据库中。主屏幕列出每个提醒的标题,单击一个项目显示其详细信息。所有这一切都很好。
现在我想允许用户为每个项目设置通知,在预定活动开始之前,我们可以选择设置15分钟,30分钟或1小时的提醒。
我不知道如何解决这个问题,也找不到任何好的教程。任何人都可以告诉我如何实现这个目标吗?
谢谢!
答案 0 :(得分:2)
使用AlaramManager发送广播,告知您的应用向用户显示有关该事件的通知。
以下是使用它的示例:Alarm Manager Example
答案 1 :(得分:2)
从数据库中获取事件的日期后,就像其他任何通知一样简单,请记住,您要减去到该日期的时间(15,30,60分钟)。 / p>
Timer timer = new Timer();
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy HH:mm");
Date date = formatter.parse("11/08/2012 16:39");
timer.schedule(timerTask, date);
这会将活动安排到活动时间,我知道您需要在活动实际发生之前提醒。为此,您可以创建一个日历对象,以您需要的方式修改日期。请记住删除之前的时间表,否则您将收到两个提醒(当时一个,一个提醒)。
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, -15);//Or whatever
//Then schedule it.
time.schedule(timerTask,cal.getTime());
这两种方法都使用变量timerTask
,这可能是这样的,涉及createNotification
方法调用,实际上会创建待处理通知。
TimerTask timerTask = new TimerTask(){
@Override
public void run(){
createNotification(title, text, tickerText, millisec);
}
};
您有潜在的问题。如果应用程序关闭,我相信计时器会随之消失,因此根据应用程序的性质,您可能希望像其他人所建议的那样使用AlarmManager
。
答案 2 :(得分:1)
您将使用AlarmManager设置在特定日期/时间触发的操作。 (有很多关于如何使用AlarmManager的教程)
警报管理器事件始终触发PendingIntent。通过此意图,您可以进行广播或启动服务。 (您必须创建广播接收器或服务)
然后在您建立的广播接收器或服务上显示通知。
我建议使用广播接收器路线,它更干净,更无缝。 您可能还有onBoot事件的广播接收器,以重新安排用户重新启动设备的警报管理器上的事件。