データベースからイベントの日付を取得したら、他の通知と同じくらい簡単ですが、日付から時間 (15、30、60 分) を差し引くことに注意してください。
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);
これにより、イベントがイベント時間にスケジュールされます。イベントが実際に行われる前にリマインダーが必要とのことですが、これを行うには、カレンダー オブジェクトを作成して、必要な方法で日付を変更できます。以前のスケジュールを削除することを忘れないでください。そうしないと、2 つのリマインダー (一度に 1 つとリマインダーとして 1 つ) が残ります。
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
人が提案したように使用することをお勧めします.