我最近开始使用Java,并且正在探索Android开发。我试图移植一个我制作的Java程序,但是我在获取java Timer以在Android中以相同方式运行时遇到了一些困难。我阅读了大量的帖子,他们大部分都表示,最好在Android中使用Handler类而不是Timer。Android中的Java Timer相当于
这是我用Java定时器:
playTimer = new Timer(1000/model.getFPS(), new ActionListener() {
public void actionPerformed(ActionEvent evt) {
// do something
...
if(finished everything) playTimer.stop();
}
});
而且一旦某个按钮被点击,我只想跑“playTimer.start()”来启动它。正如你所看到的,我已经设置了它,以便用户可以设置他们想要的FPS(只需将Timer类的第一个参数设置为1000/model.getFPS())即可。
现在我试着在Android中使用处理程序做类似的事情,但我遇到了一些困难。看起来Handler蜱没有按适当的时间间隔发射。看起来它们比我所需要的要慢。这是我到目前为止在android上所做的:
public void startTimer() {
playHandler = new Handler();
startTime = System.currentTimeMillis();
playHandler.removeCallbacks(updateTimeTask);
playHandler.postDelayed(updateTimeTask, 0);
}
private Runnable updateTimeTask = new Runnable() {
public void run() {
// do something
...
if(finished everything) playHander.cancel();
else {
playHandler.postDelayed(updateTimeTask, 1000/model.getFPS());
}
}
};
打扰半伪码。任何人都可以摆脱光线吗?多谢你们。
处理程序是粗略的估计。在大约1秒内做大约100ms。这并不意味着任何需要确切的东西。 – 2013-04-07 20:23:36
作为'Handler'运行在'UIThread'上,它只会在线程上得到时间,无论何时它有一个时隙,它不控制它自己,所以它不是完全严格的'Handler'将完成。如果是这样的话,用户界面在某些时候可能会不响应。 – Darwind 2013-04-07 20:52:01