CountDownTimer值永远不会为零

安卓

我将计时器初始化为11000毫秒,并显示日志,看到计时器从10959毫秒变为1484毫秒

private void startGameCountDown() {
        mCountDownTimer = new CountDownTimer(11000, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {

            Log.i(TAG, "onTick: " + millisUntilFinished);

            mTimerTv.setText(String.format("%d", millisUntilFinished));
            mTimerTv.invalidate();
        }

        @Override
        public void onFinish() {
        }
    }.start();

怎么了

安卓

我最终创建了自己的计时器:

public abstract class CountDownTimer {

    private static final String TAG = CountDownTimer.class.getSimpleName();

    private static final long TIMER_DEFAULT = 4000; //ms
    private static final long TIMER_STEP    = 1000; //ms

    private boolean mIsRunning = false;

    private long mRemainingTime = 0;
    private long mTotalTime;

    private Handler mHandler = new Handler();

/**
 * Callback fired on regular interval.
 *
 * @param millisUntilFinished The amount of time until finished.
 */
public abstract void onTick(long millisUntilFinished);

/**
 * Callback fired when the time is up.
 */
public abstract void onFinish();

public CountDownTimer(long timerStartValue) {

    if (timerStartValue >= 1) {
        mTotalTime = timerStartValue * TIMER_STEP;
        mRemainingTime = timerStartValue * TIMER_STEP;
    } else {
        mTotalTime = TIMER_DEFAULT;
        mRemainingTime = TIMER_DEFAULT;
    }
}

public CountDownTimer start() {

    mIsRunning = true;

    // Start the initial runnable task by posting through the handler
    mHandler.postDelayed(runnableCode, TIMER_STEP);
    return this;
}

public void cancel() {
    mIsRunning = false;
    mHandler.removeCallbacks(runnableCode);
}

private Runnable runnableCode = new Runnable() {
    @Override
    public void run() {

        if (mRemainingTime >= 0) {
            onTick(mRemainingTime);
        } else {
            mIsRunning = false;
            onFinish();
        }

        mRemainingTime -= TIMER_STEP;

        if (mIsRunning) {
            // Goes on
            mHandler.postDelayed(runnableCode, TIMER_STEP);
            }
        }
    };

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CoreData可选的多对多关系永远不会为零?

来自分类Dev

CoreData可选的多对多关系永远不会为零?

来自分类Dev

自定义单元永远不会为零(不要使用情节提要)

来自分类Dev

自定义单元永远不会为零(不要使用情节提要)

来自分类Dev

为什么光标永远不会为空?

来自分类Dev

Request.IsAuthenticated永远不会为真

来自分类Dev

C / C ++链表永远不会为空

来自分类Dev

AJAX 成功函数永远不会为真

来自分类Dev

C:使用strtol endptr永远不会为NULL,无法检查值是否仅为整数?

来自分类Dev

带有OpenCV的Numpy渐变永远不会为负

来自分类Dev

数组永远不会为空,但打字稿不知道

来自分类Dev

在目标c中将永远不会为bool执行代码

来自分类Dev

为什么 softmax 交叉熵损失在张量流中永远不会给出零值?

来自分类Dev

常量unassigned可选默认情况下不会为零

来自分类Dev

Python Riemann Sum 不会为相等的正负区域产生零

来自分类Dev

[FromBody] 会不会总是将我从永远不会为空的参数中拯救出来?

来自分类Dev

Libgdx Scene2d进度栏永远不会为空

来自分类Dev

Websocket @OnMessage永远不会为二进制消息触发文本

来自分类Dev

有没有办法使CSS calc()永远不会为负值?

来自分类Dev

为什么$(someElement).height()永远不会为我正确计算高度?

来自分类Dev

永远不会为 Typings 文件生成 Javascript 文件。(*.d.ts)

来自分类Dev

BrowserDriver 永远不会为每个 SERENITY CUCUMBER 场景重新启动

来自分类Dev

警告:编译器可以假设 'x' 的地址永远不会为 NULL

来自分类Dev

错误警告“永远不会读取分配的值”

来自分类Dev

循环不会为分段函数返回正确的值

来自分类Dev

Hash :: make不会为相同的输入生成相同的值

来自分类Dev

HashMap / ArrayList 不会为每个键取多个值

来自分类Dev

当值为零时,WebAPI不会为INT返回JSON

来自分类Dev

三元运算符条件永远不会为真,请尝试使用多行ajax请求

Related 相关文章

  1. 1

    CoreData可选的多对多关系永远不会为零?

  2. 2

    CoreData可选的多对多关系永远不会为零?

  3. 3

    自定义单元永远不会为零(不要使用情节提要)

  4. 4

    自定义单元永远不会为零(不要使用情节提要)

  5. 5

    为什么光标永远不会为空?

  6. 6

    Request.IsAuthenticated永远不会为真

  7. 7

    C / C ++链表永远不会为空

  8. 8

    AJAX 成功函数永远不会为真

  9. 9

    C:使用strtol endptr永远不会为NULL,无法检查值是否仅为整数?

  10. 10

    带有OpenCV的Numpy渐变永远不会为负

  11. 11

    数组永远不会为空,但打字稿不知道

  12. 12

    在目标c中将永远不会为bool执行代码

  13. 13

    为什么 softmax 交叉熵损失在张量流中永远不会给出零值?

  14. 14

    常量unassigned可选默认情况下不会为零

  15. 15

    Python Riemann Sum 不会为相等的正负区域产生零

  16. 16

    [FromBody] 会不会总是将我从永远不会为空的参数中拯救出来?

  17. 17

    Libgdx Scene2d进度栏永远不会为空

  18. 18

    Websocket @OnMessage永远不会为二进制消息触发文本

  19. 19

    有没有办法使CSS calc()永远不会为负值?

  20. 20

    为什么$(someElement).height()永远不会为我正确计算高度?

  21. 21

    永远不会为 Typings 文件生成 Javascript 文件。(*.d.ts)

  22. 22

    BrowserDriver 永远不会为每个 SERENITY CUCUMBER 场景重新启动

  23. 23

    警告:编译器可以假设 'x' 的地址永远不会为 NULL

  24. 24

    错误警告“永远不会读取分配的值”

  25. 25

    循环不会为分段函数返回正确的值

  26. 26

    Hash :: make不会为相同的输入生成相同的值

  27. 27

    HashMap / ArrayList 不会为每个键取多个值

  28. 28

    当值为零时,WebAPI不会为INT返回JSON

  29. 29

    三元运算符条件永远不会为真,请尝试使用多行ajax请求

热门标签

归档