2014-03-04 77 views
2

我得到了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(); 
    } 
+0

使用mHandler而不是CountDownTimer来计数diwn – pskink

回答

0

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

+0

thx ..;)我只是愚蠢的,忘记与1000乘以秒。当我试着用按钮它总是已经成倍 – kokash