倒数计时器正在运行时执行Android的命令

时间:2015-06-09 15:16:38

标签: android timer

我正在尝试编写一个应用程序,在textview上向用户显示一个字符串,并根据用户输入替换文本。这应该在60秒的时间间隔内发生。 我尝试使用倒计时器,它在onFinish方法上将boolean var设置为false。虽然这个布尔值是真的,但我正在尝试更改textview中的字符串(由于用户操作,进一步的工作将是更改文本,但我仍然试图通过简单的操作来完成此工作)。

现在,应用程序似乎陷入困境并且没有任何反应,但如果我删除while循环,屏幕上会有一个文本(应该是这样)。

为此目的使用while循环是否有问题?是否有不同的方式与计时器一起工作?

(p.s我知道代码中存在一些问题,但这只是为了隔离问题。谢谢!)

编辑: 我会尽力澄清我的意图: 我想给用户任务,他应该在给定的时间内执行。我想显示屏幕上剩余的时间以及要执行的任务。当用户完成任务时,如果时钟仍有时间,他将按下一个按钮,将出现另一个任务。目标是在给定的时间内完成尽可能多的任务。

我的代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start_game);

    Bundle b = getIntent().getExtras();
    game = b.getParcelable("game_record");

    figuresList = new ArrayList<String>(game.getFiguresList());

    clockView = (TextView) findViewById(R.id.clockView);
    figureText = (TextView) findViewById(R.id.figureText);

    timer = new CountDownTimer(10000, 1000) {

        public void onTick(long millisUntilFinished) {
            clockView.setText(Long.toString(millisUntilFinished / 1000));
        }

        public void onFinish() {
            clockView.setText("done!");
            isTurn = false;
        }
    };

    playRound();
}

private void playRound() {

    figuresIterator = figuresListUsage.iterator();
    isTurn = true;
    String nextFigure = figuresIterator.next();
    timer.start();

    while (isTurn == true) {
        figureText.setText(nextFigure);
        nextFigure = figuresIterator.next();
    }
}

1 个答案:

答案 0 :(得分:0)

理解你的游戏逻辑有点困难,但我看到你的代码的主要问题是你在生命周期事件处理程序中进入循环。看一下这个lifecycle description。您正在onCreate中停止它,并且在活动完成其生命周期处理之前仍有工作要做。
我建议你尝试制作游戏圆形事件绑定或使用不同的线程。有很多线程API用于Android,因为我不知道你的游戏轮次的性质,我不能推荐任何。