定时器错误倒计时

时间:2012-08-08 20:26:54

标签: android timer handler countdown

我的计时器出了问题。之后我按下处理程序的开始按钮值显示-22406914:0-51而不是倒计时。下面是代码(我帮助自己提供了这个帮助:http://android-developers.blogspot.com/2007/11/stitch-in-time.html)。我不知道我在哪里弄错了......

public class biegi extends Activity {
TextView Todleglosc, Tpredkosc, Tczas;
ImageView Ibiegacz;
Button clear, startstop;
LocationManager locationManager;
Location lokacjaPoczatkowa;
String providerName;
boolean start;
private long startTime;
private Handler mHandler = new Handler();

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.biegi);
inicjuj();
actionbuttonsc();
} // oncreate

private Runnable mUpdateTimeTask = new Runnable() {
        public void run() {
             final long start = startTime;
               long millis = SystemClock.uptimeMillis() - start;
               int seconds = (int) (millis / 1000);
               int minutes = seconds / 60;
               seconds     = seconds % 60;

               if (seconds < 10) {
                   Tczas.setText("" + minutes + ":0" + seconds);   
               } else {
                   Tczas.setText("" + minutes + ":" + seconds);            
               }     
               mHandler.postAtTime(this,start + (((minutes * 60) + seconds +     1) * 1000));               
        }           
    };

public void inicjuj (){
Todleglosc=(TextView) findViewById(R.id.odleglosc);
Tpredkosc=(TextView) findViewById(R.id.predkosc);
Tczas=(TextView) findViewById(R.id.czas);
Ibiegacz=(ImageView) findViewById(R.drawable.biegacz);
clear=(Button) findViewById(R.id.clear);
startstop=(Button) findViewById(R.id.button_bieg_start_stop);
start=false;
}


public void actionbuttonsc()
{
clear.setOnClickListener(new View.OnClickListener()
        {
    public void onClick(View v) {
    Tczas.setText("00:00:00");

    }
});

startstop.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {   
        if (start==false)
        {
            Tczas.setText("00:00:01");
            startTime = System.currentTimeMillis();
            mHandler.removeCallbacks(mUpdateTimeTask);
            mHandler.postDelayed(mUpdateTimeTask, 100);
            start=true;
        }

else if (start==true)
    {
        Tczas.setText("00:00:00");
        mHandler.removeCallbacks(mUpdateTimeTask);
        start=false;                        
    }}});
}
}

1 个答案:

答案 0 :(得分:1)

您使用startTimecurrentTimeMillis)设置startTime = System.currentTimeMillis();,然后使用uptimeMillislong millis = SystemClock.uptimeMillis() - start;)进行阅读。

以下是我要做的事情:

// Change this:
long millis = SystemClock.uptimeMillis() - start;
// .. to this:
long millis = System.currentTimeMillis() - start;
相关问题