首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CountDown计时器?(毫秒精度)?

CountDown计时器?(毫秒精度)?
EN

Stack Overflow用户
提问于 2015-11-04 22:33:03
回答 1查看 295关注 0票数 0

我在代码中使用countDownTimer。问题是,倒计时不准确。onTick方法并不总是每秒钟执行一次,它可能会间隔几毫秒。当试图基于millisUntilFinished执行某项任务时,这将成为一个问题。当我的20秒计时器超过10秒时,我正在尝试登录:

以下是相关代码:

代码语言:javascript
复制
    if (millisUntilFinished == 10000) { //TEN SECONDS

                Log.v(TAG, "TEN SECONDS LEFT");
            }

问题出现在这里,因为countDownTimer甚至可能从来没有 millisUntilFinished == 10000,所以它可能等于1001,所以我的代码不会执行。是否有任何方式将millisUntilFinished (这是一个长的)绕到最近的数千个?我尝试了以下几点:

代码语言:javascript
复制
 millisUntilFinishedRounded = MathUtils.round((double) millisUntilFinished, -3); // nearest thousand, 2000.0

但我无法解决'MathUtils‘

我迷路了。我真的很感激任何反馈(正面或负面)!非常感谢你的帮助。

代码语言:javascript
复制
{Rich}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-04 22:50:52

有几种选择:

  1. 您可以通过添加N/2,除以N,再乘以N,将正整数舍入最近的N: ((500 + millisUntilFinished) / 1000) * 1000
  2. 您可以使用一个条件,该条件只检查该值是否位于舍入为10000的范围内: millisUntilFinished >= 9500 &&;10500
  3. 您可以第一次检查millisUntilFinished降到10000以下: 布尔printedMessage = false;而(true) { millisUntilFinished =.if (!printedMessage && millisUntilFinished < 10000) {System.out.println(“您的消息”);printedMessage = true;}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33533364

复制
相关文章

相似问题

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