Android 每隔一段時間執行方法。計時器。

代碼:

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);
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章