繁体   English   中英

如何为特定的小时和分钟制作 Timer.schedule()?

[英]how to make a Timer.schedule() for specific hours and minutes?

我试图让schedule()方法等到特定的小时和分钟到来并开始执行任务,但它没有工作,因为方法schedule()不需要小时和分钟作为参数,这个方法的替换是什么? 我应该安排几个小时的时间表,然后当小时到来时,程序检查分钟? 那么如果两者都正确,它将开始执行还是什么?

PS为了让事情更容易理解,如何制作与此类似的东西:

时间表(新 TimerClass(),所需的小时数所需的分钟数)?

你不需要这样的硬编码。测试小时然后分钟。只需安排如下任务。 下面给出的任务将在一小时后执行,并且每 30000 毫秒重复一次。如果您只需要执行一次,则在第一次执行后取消时间,如使用 t.cancel() 并将 Hour+minute 转换为 ms 以放置预定时间

 TimerTask scanTask;
final Handler handler = new Handler();
Timer t = new Timer();


scanTask = new TimerTask() {
        public void run() {
                handler.post(new Runnable() {
                        public void run() {
                         //do your task here    

                    }
               });
        }};

t.schedule(scanTask, 1*60*60*1000, 30000); 

如果您想安排特定的时钟时间(而不是从当前时间延迟),这里有一些选项:

  • 如果您这样做足以证明附加库的合理性,请使用Quartz Quartz 可以很容易地指定时钟时间,并支持调度重复事件。
  • 否则,在您计划时,计算当前时间和所需时间之间的差异。 (使用日历 class 创建时钟时间,转换为日期,然后 getMillis()。)将差异提供给 Timer -- 或 ScheduledThreadPoolExecutor。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM