Android 每隔一段時間執行方法。計時器。
阿新 • • 發佈:2019-02-06
程式碼:
Timer timer = new Timer(true);
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
Log.i("lllll111" ,"上班時間,傳送位置。");
}
};
timer.schedule(timerTask, 0,2000);
schedule方法有三個引數
第一個引數就是TimerTask型別的物件,我們實現TimerTask的run()方法就是要週期執行的一個任務;
第二個引數有兩種型別,第一種是long型別,表示多長時間後開始執行,另一種是Date型別,表示從那個時間後開始執行;
第三個引數就是執行的週期,為long型別。
schedule方法還有一種兩個引數的執行過載,第一個引數仍然是TimerTask,第二個表示為long的形式表示多長時間後執行一次,為Date就表示某個時間後執行一次。?
Timer就是一個執行緒,使用schedule方法完成對TimerTask的排程,多個TimerTask可以共用一個Timer,也就是說Timer物件呼叫一次schedule方法就是建立了一個執行緒
//以下是幾種排程task的方法:
//time為Date型別:在指定時間執行一次。
timer.schedule(task, time);
//firstTime為Date型別,period為long,表示從firstTime時刻開始,每隔period毫秒執行一次。
timer.schedule(task, firstTime, period); //較為常用 ,上面的示例就是這個方法
//delay 為long型別:從現在起過delay毫秒執行一次。
timer.schedule(task, delay);
---------------------
並且呼叫一次schedule 後TimerTask是無限制的迴圈下去的,使用Timer的cancel()停止操作。當然同一個Timer執行一次cancel()方法後,所有Timer執行緒都被終止。
獲取當前時間
我這裡只獲取了小時
yyyy-MM-dd HH:mm:ss
//獲取當前時間戳 long timeStamp = System.currentTimeMillis(); String time = stampToDate(timeStamp); Log.d("xxxxx", time); /* * 將時間轉換為時間戳 */ public String dateToStamp(String time) throws ParseException { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH"); Date date = simpleDateFormat.parse(time); long ts = date.getTime(); return String.valueOf(ts); } /* * 將時間戳轉換為時間 */ public String stampToDate(long timeMillis){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH"); Date date = new Date(timeMillis); return simpleDateFormat.format(date); }