我有一个想要在00:00 am,08:00 am和16:00 pm执行的功能。 (每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();
}
答案 0 :(得分:0)
尝试使用& RND高于Service, AlarmManager, PendingIntent & Intent
及其工作组合。
答案 1 :(得分:0)
你可以使用AlarmManager类来安排特定时间的任务,有很多警报管理员的例子,android docs
答案 2 :(得分: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) {
...
}