我收到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 :(得分:0)
当time
不起作用时,你打印出它的价值吗?如果time < SystemClock.elapsedRealtime() + 1000
,则会在不调用onFinish
的情况下调用onTick
。