【发布时间】: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