0

您好,我真的不知道如何做到这一点,我已经尝试过使用计时器和 CountDownTimer,但我不知道如何完成它。我想做的事 ?我想在通过“20”以显示对话框后每秒将健康降低“-1”以显示会说

Title: "Low Health"
Message: "The dog health is going low give him some food" 
Button: "Got it" 

我有这段代码,当我启动应用程序时,它会自动关闭/崩溃,我不知道该怎么办,请帮忙:

Timer myTimer = new Timer();
        myTimer.schedule(new TimerTask() {
            @Override
            public void run() {
                Health -= 1;
                if (Health <= 20) {
                    if (!canSeeWarnDialog) {
                        lowFood();
                    }
                    canSeeWarnDialog = true;
                }
            }
        }, 0, 1000);

谢谢你。

编辑: 我希望这个动作持续 1 分钟,我告诉 1 秒。测试速度更快的原因...

4

1 回答 1

1

如果我理解正确的话,生命值会有一定的值,你想每秒减少 1。如果该值低于 20,那么您想调用 lowFood() 对吗?您可以尝试以下方法(我已经在真实设备上对此进行了测试并更新了答案):

Handler handler = new Handler();
handler.post(new Runnable() {

    boolean run = true;
    int health = 200;

    @Override
    public void run() {
        while(run) {
            health = health - 1;
            if(health < 1) {
                lowFood();
                run = false;
            }

            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
});
于 2013-08-08T17:34:35.590 回答