gpt4 book ai didi

java - (android studio)mTimer和按钮

转载 作者:太空宇宙 更新时间:2023-11-04 12:57:22 25 4
gpt4 key购买 nike

mTimer.schedule(new TimerTask()
{
@Override
public void run()
{
randomNumber = rand.nextInt(8) + 1;
arrayList.add(randomNumber);

runOnUiThread(new Runnable()
{
@Override
public void run()
{
textArrayList.setText("" + arrayList);
textRandomNumber.setText("" + randomNumber);

if (gameOptionNumber < arrayList.size())
{
layoutGameButton.setVisibility(View.VISIBLE);

if(enterClicked == false)
{
mTimer.cancel();
}
}
}
});
}
}, 3000, 3000);

...

else if(v == buttonEnter)
{
TextView output = (TextView)findViewById(R.id.output);
enterClicked = true;
if(output.getText().length() != 0)
{
temp = Integer.parseInt(output.getText().toString());
compareNumber(temp);
output.setText("");
}
}

我在这里想做的是数字每 3 秒改变一次,我必须按数字然后输入按钮。如果我在下一个数字出现之前 3 秒内没有按 EnterButton,则计时器应该停止。

我创建了 EnterClicked 并为其分配了 false,然后我所做的是每次单击 EnterButton 时,它都会将 EnterClicked 更改为 true,并且计时器应该继续运行。

但不幸的是,即使我按下了 EnterButton,计时器也停止了。

我应该将 EnterClicked 放在不同的位置吗?

请帮忙!!

最佳答案

这里的问题是,当您取消计时器时,您不会重新启动或创建新计时器! http://developer.android.com/intl/pt-br/reference/java/util/Timer.html#cancel()

public void cancel ()

Cancels the Timer and all scheduled tasks. If there is a currently running task it is not affected. No more tasks may be scheduled on this Timer. Subsequent calls do nothing.

由于按下 Enter 键时必须重新启动计时器,因此您需要在下一个计划的计时器周期之前重新启动计时器。因此,当您取消计时器时,请确保创建一个新计时器并启动它。 (如果前面的计时器没有被垃圾回收,这可能会导致内存占用。)

此外,我建议您使用 Handlers 而不是 TimerTasks。阅读此内容 - http://www.mopri.de/2010/timertask-bad-do-it-the-android-way-use-a-handler/

祝一切顺利:)

关于java - (android studio)mTimer和按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35264249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com