Java 使用计时器android调度通知
我在用计时器来安排通知Java 使用计时器android调度通知,java,android,Java,Android,我在用计时器来安排通知 GregorianCalendar date = new GregorianCalendar(2011, 2, 6, 16, 50); long task = date.getTimeInMillis() - System.currentTimeMillis(); Timer timer = new Timer(); TimerTask timerTask = new TimerTask() { @Ov
GregorianCalendar date = new GregorianCalendar(2011, 2, 6, 16, 50);
long task = date.getTimeInMillis() - System.currentTimeMillis();
Timer timer = new Timer();
TimerTask timerTask = new TimerTask()
{
@Override
public void run()
{
triggerNotification();
}
};
timer.schedule(timerTask, task);
如果我在schedule方法中手动输入一个长值,计时器将工作,但如果我使用task变量,计时器似乎不会工作。基本上,我希望在公历对象中指定的日期和时间安排通知。我做错了什么?通过使用此功能而不是日历来实现此功能:
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy HH:mm");
Date date = formatter.parse("02/06/2011 16:28");
timer.schedule(timerTask, date);
如果您正在安排的任务已离开一段时间,AlarmManager类可能也值得一看:您可以执行以下操作:
private void createStatusBarNotification(final String contentTitle, final String contentText, final String tickerText, final long millisec)
{
//Date date = new Date(System.currentTimeMillis() + (1000 * 60 * 2));//in next 2 minutes
long f = System.currentTimeMillis() + (1000 * 60 * 2);
//super.webView.loadUrl("javascript: alert('::"+millisec+","+f+"')");
Date date = new Date(millisec);
Timer timer = new Timer();
TimerTask timerTask = new TimerTask()
{
@Override
public void run()
{
createNotification( contentTitle, contentText, tickerText, millisec);
}
};
timer.schedule(timerTask, date);
}
比较这两种方法,我现在看到了第一种方法的错误:在GregorianCalendar中,月份为零,这意味着第一种代码触发了3月6日的通知,而不是2月6日的通知。