Android倒计时器未正常运行

时间:2016-04-10 23:49:58

标签: java android countdowntimer

我的代码中有一个倒数计时器。这个倒数计时器应该每隔10毫秒打一次,然后将textview的数字加1,直到达到他们在游戏中得到的用户分数。

它甚至没有达到价值的一半。这是我的代码:

new CountDownTimer(lastScore*10, 10) {

        public void onTick(long millisUntilFinished) {
            tempScore++;

            TextView lg = (TextView)findViewById(R.id.lastgame);
            lg.setText("LAST SCORE: " + String.valueOf(tempScore));
            lg.setTypeface(eightBitFont);
        }

        public void onFinish() {

        }

    }.start();

最后得分是他们在比赛中得到的分数。 tempScore仅用于存储新值以将textview更改为。

编辑:一位用户指出10ms的分辨率可能太差了。 在10ms的分辨率下,我的lastScore值为115,tempScore只增加到46,将它改为30ms,我达到108左右,将它改为50使我更加接近。看起来我将不得不使用100ms刻度值来使它成为正确的值。但对于我想要实现的目标来说,这有点慢。有没有更好的方法去做我想要实现的目标?

1 个答案:

答案 0 :(得分:0)

每当你倒计时时,你都会调用昂贵的方法findViewById。 您必须在计时器之外分配它。 所以你的代码可能如下:

TextView lg = (TextView)findViewById(R.id.lastgame);

new CountDownTimer(lastScore*10, 10*1000) { // set to be called each 10 seconds

        public void onTick(long millisUntilFinished) {
            tempScore++;
            lg.setText("LAST SCORE: " + String.valueOf(tempScore));

        }

        public void onFinish() {

        }

    }.start();