0

我有个问题。我想在特定时间启动计时器。即,我有时间说,05:10:02。那么计时器将从 05:10:02 开始。例如,05:10:02、05:10:03、05:10:04 等等。

当我打开活动时,它应该获取当前时间,并且计时器将启动上述问题中的描述。

我有以下代码。

    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    sdf.setTimeZone(TimeZone.getTimeZone("GMT"));

    inputString = str;  //05:10:02


    try {
        date = sdf.parse(inputString);

        Log.i("Test", "in milliseconds: " + date.getTime());  
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    if(mStartTimeGlobal== 0L) {
        mStartTimeGlobal = date.getTime();
        mHandlerGlobal.removeCallbacks(mUpdateTimeTaskGlobal); 
        mHandlerGlobal.postDelayed(mUpdateTimeTaskGlobal, 100);
    }



     private Runnable mUpdateTimeTaskGlobal = new Runnable(){

    public void run() {

        //DecimalFormat df = new DecimalFormat("##.####");

        final long start = mStartTimeGlobal;
        long millis = date.getTime();

        int seconds = (int) (millis / 1000);
           int minutes = seconds / 60;
           seconds = seconds % 60;
           int hours = seconds/3600;

           String timer = String.format("%02d", hours) + ":" + String.format("%02d", minutes) + ":" + String.format("%02d", seconds);

           ///mTotalTimeTakenGlobal = timer;

           txt_start_timer.setText(timer);                                                                         
           mHandlerGlobal.postDelayed(this, 200);               

     }    
 };
4

1 回答 1

1

使用定时器

Date date = new Date("...")
Timer t = new Timer(); 
t.schedule(new TimerTask() {
   public void run() {
     // do your actions
   }
}, date);

您的任务将在非 GUI 线程中启动,因此在时间事件发生后使用runOnUiThread更新您的界面。这种方法的限制是您的程序必须运行才能获得通知,它不会在给定时间自动启动。您可以在同一个计时器上安排多个任务,以便它们可以在不同的日期开始。

于 2013-01-01T12:24:34.200 回答