1

我有一个希望在上午 00:00、上午 8:00 和下午 16:00 执行的函数。(每 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();
    }
4

3 回答 3

0

尝试使用 & RND overService, AlarmManager, PendingIntent & Intent和它们的工作组合。

于 2013-02-14T07:51:05.167 回答
0

您可以使用 AlarmManager 类在特定时间安排任务,有很多 alarammager 示例,android 文档

于 2013-02-14T07:51:15.290 回答
0

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

2) Locale.ENGLISH 没有区别,去掉以免混淆

3)您的开始日期是过去的,当您启动计时器时,它将运行所有跳过的时间表。如果您不希望它检查 TimerTask.scheduledExecutionTime() 是否在过去,例如

        public void run() {
            // truncate time to hours
            long t1 = System.currentTimeMillis() / 3600000 * 3600000;
            long t2 = scheduledExecutionTime() / 3600000 * 3600000;
            if (t2 >= t1) {
                ...
            }
于 2013-02-14T07:55:22.850 回答