使用Timer android安排通知

时间:2011-02-06 16:05:43

标签: 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()
    {
        @Override
        public void run()
        {
            triggerNotification();
        }
    };
    timer.schedule(timerTask, task);

如果我在计划方法中手动输入长值,计时器将起作用,但如果我使用任务变量,则看起来没有任何效果。基本上我想在Gregorian Calendar对象中的所述日期和时间安排通知。我做错了什么?

3 个答案:

答案 0 :(得分:2)

通过使用此代替日历来实现此目的:

    SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy HH:mm");
    Date date = formatter.parse("02/06/2011 16:28");
timer.schedule(timerTask, date);

答案 1 :(得分:0)

如果你安排的任务还有一段时间,那么AlarmManager课程可能也值得关注:http://developer.android.com/reference/android/app/AlarmManager.html

答案 2 :(得分:0)

您可以执行以下操作:

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);            
}