2011-08-09 6 views
1

質問があります。このコードタイマーは正しいですか;]または私はここで何かを参照してくださいすることはできませんやすくアンドロイドタイマー問題

package timer2.android; 

import java.util.Timer; 
import java.util.TimerTask; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class Timer2Activity extends Activity { 

private TextView tv; 
private Timer myTimer; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    tv = (TextView)findViewById(R.id.textView1); 

    myTimer = new Timer(); 
    myTimer.schedule(new TimerTask() { 
     @Override 
     public void run() { 
      TimerMethod(); 
     } 

    }, 0, 1000); 
} 

private void TimerMethod() 
{ 

    //This method is called directly by the timer 
    //and runs in the same thread as the timer. 

    //We call the method that will work with the UI 
    //through the runOnUiThread method. 
    this.runOnUiThread(Timer_Tick); 
} 

long mStartTime = System.currentTimeMillis(); 

private Runnable Timer_Tick = new Runnable() { 
    public void run() { 
     final long start = mStartTime; 
     long millis = System.currentTimeMillis() - start; 
     int seconds = (int) (millis/1000); 
     int minutes = (int) (seconds/60); 
     seconds  = seconds % 60; 

     if (seconds < 10) 
     { 
      tv.setText("" + minutes + ":0" + seconds); 
     } 
     else 
     { 
      tv.setText("" + minutes + ":" + seconds);    
     } 

     //a++; 

    //This method runs in the same thread as the UI.    

    //Do something to the UI thread here 

    } 
}; 

}

+0

これは方法であり、本当にトリックを行います。もちろん、他にもたくさんの方法がありますが、すべて同じことをします。 – nhaarman

答えて

0

を行うことができます。しかし、追加のスレッドを作成しないので、タイマーにはHandlerを使用する必要があります。ここの例を参照してください。Repeat a task with a time delay?

+0

ありがとう):) – Peter