Java 如何制作秒表线?
我试图创建一个线程,该线程应该每秒计数一次,并在textview中进行更新,Java 如何制作秒表线?,java,android,Java,Android,我试图创建一个线程,该线程应该每秒计数一次,并在textview中进行更新, 但是当我运行activty时,它就冻结了。你没有循环,添加while循环会让线程一遍又一遍地运行代码 此外,您将无法从后台线程更新TextView的文本 i、 e.timer1.setText(分钟+“:”+秒) 您需要发布更新,如下所示: //make timer min = 0; sec = 0; final TextView timer1 = (Te
但是当我运行activty时,它就冻结了。你没有循环,添加while循环会让线程一遍又一遍地运行代码 此外,您将无法从后台线程更新TextView的文本 i、 e.
timer1.setText(分钟+“:”+秒)代码>
您需要发布更新,如下所示:
//make timer
min = 0;
sec = 0;
final TextView timer1 = (TextView) findViewById(R.id.timer1);
timer1.setText(min + ":" + sec);
Thread t = new Thread() {
public void run() {
sec+=1;
if (sec>59) {
min+=1;
sec=0;
}
timer1.setText(min + ":" + sec);
Log.d("Timer", "run: "+min+":"+sec);
try
{
sleep(1000);
}
catch (InterruptedException e)
{}
}
};
t.start();
private boolean running = false;
@Override
public void onResume() {
super.onResume()
final Handler mainThreadHandler = new Handler()
running = true;
// make timer
min = 0;
sec = 0;
final TextView timer1 = (TextView) findViewById(R.id.timer1);
timer1.setText(min + ":" + sec);
Thread t = new Thread() {
public void run() {
while(running) {
sec += 1;
if (sec > 59) {
min += 1;
sec = 0;
}
mainThreadHandler.post(new Runnable(){
@Override
public void run() {
timer1.setText(min + ":" + sec);
}
}
Log.d("Timer", "run: "+min+":"+sec);
try{ Thread.sleep(1000);}
catch (InterruptedException e) {Log.e("TUT", "error! don't ignore me", e}
}
}
};
t.start();
}
@Override
public void onPause() {
running = false;
super.onPause()
}