【问题标题】:Problems starting countdown timer from handler从处理程序启动倒数计时器的问题
【发布时间】:2014-03-04 14:56:28
【问题描述】:

我通过 socket.io 收到通知,在我的 Android 应用程序中启动倒数计时器。我使用 Handler 将数据从 socket.io 回调发送到 UI 线程。处理程序消息完美运行。但是从处理程序启动倒数计时器不起作用(不会调用 onTick() 函数)。如果我从 UI 元素开始,一切正常。当倒数计时器不是从 UI 线程操作时,最好的方法是什么?

    mHandler = new Handler(){
        public void handleMessage(Message inputMessage) {

            mBattle = (Battle) inputMessage.obj;

            switch (inputMessage.what) {

            case NO_BATTLE:
                System.out.println("got message NO_BATTLE");
                break;
            //.................

            case START_BATTLE:
                startCountdownTimer(mBattle.getCountdown());
                System.out.println("got message START_BATTLE");
                break;
        }
    }

还有倒计时功能:

    private void startProgressBar(final int time){
    if (time != 0) {
        new CountDownTimer(time, 1000) {

            @Override
            public void onTick(long millisUntilFinished) {
                Log.v("Log_tag", "Tick of Progress " + i  + " " + 
                        + millisUntilFinished);
                i++;

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

【问题讨论】:

  • 使用 mHandler 代替 CountDownTimer 来计算 diwn

标签: android countdowntimer


【解决方案1】:

time 不工作时,您是否打印出它的值?如果time < SystemClock.elapsedRealtime() + 1000,则将调用onFinish,而不调用onTick

【讨论】:

  • thx.. ;) 我只是愚蠢,忘记将秒数与 1000 相乘。当我尝试使用按钮时,它总是已经相乘了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
相关资源
最近更新 更多