小编典典
这是我的Android计时器类,应该可以正常工作。它每秒发送一个信号。如果您想要其他方案,请更改schedule()调用。
请注意,您无法在计时器线程中更改Android gui内容,这仅在主线程中允许。这就是为什么您必须使用Handler将控制权交还给主线程的原因。
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import android.os.Handler;
import android.os.Message;
public class SystemTimerAndroid {
private final Timer clockTimer;
private class Task extends TimerTask {
public void run() {
timerHandler.sendEmptyMessage(0);
}
}
private final Handler timerHandler = new Handler() {
public void handleMessage (Message msg) {
// runs in context of the main thread
timerSignal();
}
};
private List clockListener = new ArrayList();
public SystemTimerAndroid() {
clockTimer = new Timer();
clockTimer.schedule(new Task(), 1000, 1000);
}
private void timerSignal() {
for(SystemTimerListener listener : clockListener)
listener.onSystemTimeSignal();
}
public void killTimer() {
clockTimer.cancel();
}
@Override
public void addListener(SystemTimerListener listener) {
clockListener.add(listener);
}
}
2020-11-19