大家好,谢谢大家!
我有一个CountDownTimer,我想暂停一下,同时显示一个从1到给定数字的递增计数,并有一个间隔。问题是,使用下面的代码,计数器有时达到29,但有时只有28,我不知道为什么。
有人能帮我吗?
public void CountDown(View v)
{
int FinishNumber = 30;
final CountDownTimer CountDown = new CountDownTimer(FinishNumber * 100, 100)
{
int NumberToShow = 1;
public void onTick(long millisUntilFinished)
{
CopyrightTV.setText(String.valueOf(NumberToShow++));
}
public void onFinish()
{
CopyrightTV.setText(String.valueOf(NumberToShow));
this.cancel();
}
}
.start();
}发布于 2015-10-31 00:34:59
这并不是一种奇怪的行为--考虑到第一个onTick(long millisUntilFinished)只在100 is之后调用(这是您设置的间隔),而不是在启动CountDownTimer时调用。
其次,CountDownTimer不是一个100%精确的计时器,所以您可以预料到这种“奇怪的行为”。
编辑
如果准确性不是非常重要,您可以尝试将CountDownTimer增加几百ms,如下所示:
public void CountDown(final TextView v)
{
final int FinishNumber = 30;
final CountDownTimer CountDown = new CountDownTimer((FinishNumber + 4) * 100, 100)
{
int NumberToShow = 1;
public void onTick(long millisUntilFinished)
{
if (NumberToShow < FinishNumber)
v.setText(String.valueOf(NumberToShow++));
}
public void onFinish()
{
if (NumberToShow < FinishNumber)
v.setText(String.valueOf(NumberToShow));
}
}
.start();
}https://stackoverflow.com/questions/33446721
复制相似问题