代碼:
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);
}