为什么线程不能正常工作(用线程倒计时)

时间:2015-04-16 21:02:17

标签: android multithreading

我需要倒数计时器,每当我点击或计时,将结果和时间分数发送到另一个活动。所以我使用了线程,但我不知道为什么在第一次运行活动时它没有在textview中显示一些时间,更奇怪的是当按回来,然后再次进入活动它工作正常。

倒计时代码:

    if (flagTime) {
        flagTime = false;
        new Thread(new Runnable() {
            @Override
            public void run() {
                int counter = 60;
                while (function.isActivityVisible() && counter > 0) {
                    counter--;
                    final int finalCounter = counter;
                    try {
                        Thread.sleep(1000);
                        G.HANDLER.post(new Runnable() {
                            @Override
                            public void run() {
                                if (function.isActivityVisible()) {

                                    timeSc=finalCounter;
                                    String preSec = "";
                                    if (finalCounter < 10) {
                                        preSec = "0";
                                    }

                                    if (function.isActivityVisible()
                                            && finalCounter <= 0) {
                                        flagTime = false;
                                        Intent intent = new Intent(
                                                Memorize.this,
                                                MemorizeResult.class);
                                        intent.putExtra("TIME", 60);
                                        intent.putExtra("ARRAY_RESULT",
                                                array_choice);
                                        startActivity(intent);
                                        finish();
                                    }

                                    String score = "00:" + preSec
                                            + finalCounter;
                                    txt[20].setText( " time ramaining " + score);
                                }
                            }
                        });
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                if (!function.isActivityVisible()) {
                    flagTime = false;
                    finish();
                }
            }
        }).start();
    }

我使用很多标志来处理它,但似乎无法正常工作。

1 个答案:

答案 0 :(得分:0)

尝试使用CountDownTimer

类似的东西:

new CountDownTimer(30000, 1000) {

 public void onTick(long millisUntilFinished) {
     mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
 }

 public void onFinish() {
     mTextField.setText("done!");
 }
}.start();