Android 倒计时奇怪的行为
大家好,提前谢谢 我有一个倒计时,我想暂停一下,当我显示一个从1到给定数字的递增计数时,有一个间隔。问题是,根据下面的代码,计数器有时会达到29,但有时只有28,我不知道为什么 有人能帮我吗Android 倒计时奇怪的行为,android,countdowntimer,Android,Countdowntimer,大家好,提前谢谢 我有一个倒计时,我想暂停一下,当我显示一个从1到给定数字的递增计数时,有一个间隔。问题是,根据下面的代码,计数器有时会达到29,但有时只有28,我不知道为什么 有人能帮我吗 public void CountDown(View v) { int FinishNumber = 30; final CountDownTimer CountDown = new CountDownTimer(FinishNumber * 100, 100) {
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();
}
这并不是一个奇怪的行为——考虑到第一个onTick(long millisuntiltfinished)只在100ms后调用(这是您设置的间隔),而不是在启动倒计时时调用 其次,倒计时并不是100%精确的计时器,所以你可以期待这种“奇怪的行为” 编辑 如果精度不是非常重要,您可以尝试将倒计时时间增加几百毫秒,如下所示:
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();
}
public void倒计时(最终文本视图v)
{
最终整数FinishNumber=30;
最终倒计时=新倒计时((FinishNumber+4)*100100)
{
int NumberToShow=1;
公共void onTick(长毫秒未完成)
{
如果(数字显示<完成数字)
v、 setText(String.valueOf(NumberToShow++);
}
公共无效onFinish()
{
如果(数字显示<完成数字)
v、 setText(String.valueOf(NumberToShow));
}
}
.start();
}
谢谢Udi Idan,那么你将如何做我想做的事?你会使用哪种方法、函数等?