簡體   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