Java 如何安排活动?

Java 如何安排活动?,java,android,Java,Android,我有一个函数希望在00:00am、08:00am和16:00pm执行。每8小时一次 我怎样才能做到这一点 我做了一些谷歌和搜索,但我找不到解决方案 我试过下面的代码,但不起作用。请帮忙。谢谢 try { date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.ENGLISH).parse("2013/02/13 16:00:00"); TimerTask updateProfile =

我有一个函数希望在00:00am、08:00am和16:00pm执行。每8小时一次

我怎样才能做到这一点

我做了一些谷歌和搜索,但我找不到解决方案

我试过下面的代码,但不起作用。请帮忙。谢谢

        try {
        date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.ENGLISH).parse("2013/02/13 16:00:00");

        TimerTask updateProfile = new Controller(context);

        timer.scheduleAtFixedRate(updateProfile, date, 28800); //28800second == 8 hour

    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

尝试使用&RND over Service、AlarmManager、PendingEvent和Intent及其工作组合。

您可以使用AlarmManager类为特定时间安排任务,AlamManager有很多示例,

1个周期应以毫秒为单位,8小时=28800000

2.英语没有区别,请删除以避免混淆

3您的开始日期为过去,当您启动计时器时,它将运行所有跳过的计划。如果不需要,请检查TimerTask.scheduledExecutionTime是否不是过去的,例如

        public void run() {
            // truncate time to hours
            long t1 = System.currentTimeMillis() / 3600000 * 3600000;
            long t2 = scheduledExecutionTime() / 3600000 * 3600000;
            if (t2 >= t1) {
                ...
            }

使用WakeLock尝试AlarmManager,您认为它不工作是什么意思?程序将连续调用函数updateProfile。但是我想要的是每1小时调用8个函数。谢谢。这对我来说是一个新概念。我不知道它会重新运行所有跳过的计划。你能解释一下如何避免运行所有跳过的计划吗?我只希望函数在特定计时器后只运行一次。添加了一个如何跳过旧计划的示例