从处理程序启动倒数计时器的问题

时间:2014-03-04 14:56:29

标签: android countdowntimer

我收到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();
    }

1 个答案:

答案 0 :(得分:0)

time不起作用时,你打印出它的价值吗?如果time < SystemClock.elapsedRealtime() + 1000,则会在不调用onFinish的情况下调用onTick