Android 倒计时奇怪的行为

Android 倒计时奇怪的行为,android,countdowntimer,Android,Countdowntimer,大家好,提前谢谢 我有一个倒计时,我想暂停一下,当我显示一个从1到给定数字的递增计数时,有一个间隔。问题是,根据下面的代码,计数器有时会达到29,但有时只有28,我不知道为什么 有人能帮我吗 public void CountDown(View v) { int FinishNumber = 30; final CountDownTimer CountDown = new CountDownTimer(FinishNumber * 100, 100) {

大家好,提前谢谢

我有一个倒计时,我想暂停一下,当我显示一个从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();
}

这并不是一个奇怪的行为——考虑到第一个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,那么你将如何做我想做的事?你会使用哪种方法、函数等?