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 に答える