Java 如何制作秒表线?

Java 如何制作秒表线?,java,android,Java,Android,我试图创建一个线程,该线程应该每秒计数一次,并在textview中进行更新, 但是当我运行activty时,它就冻结了。你没有循环,添加while循环会让线程一遍又一遍地运行代码 此外,您将无法从后台线程更新TextView的文本 i、 e.timer1.setText(分钟+“:”+秒) 您需要发布更新,如下所示: //make timer min = 0; sec = 0; final TextView timer1 = (Te

我试图创建一个线程,该线程应该每秒计数一次,并在textview中进行更新,
但是当我运行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()
}