首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CountDownTimer奇怪行为

CountDownTimer奇怪行为
EN

Stack Overflow用户
提问于 2015-10-31 00:22:56
回答 1查看 93关注 0票数 0

大家好,谢谢大家!

我有一个CountDownTimer,我想暂停一下,同时显示一个从1到给定数字的递增计数,并有一个间隔。问题是,使用下面的代码,计数器有时达到29,但有时只有28,我不知道为什么。

有人能帮我吗?

代码语言:javascript
复制
    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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-31 00:34:59

这并不是一种奇怪的行为--考虑到第一个onTick(long millisUntilFinished)只在100 is之后调用(这是您设置的间隔),而不是在启动CountDownTimer时调用。

其次,CountDownTimer不是一个100%精确的计时器,所以您可以预料到这种“奇怪的行为”。

编辑

如果准确性不是非常重要,您可以尝试将CountDownTimer增加几百ms,如下所示:

代码语言:javascript
复制
  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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33446721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档