我希望有一个每秒循环一次的线程,例如一个旨在获得恒定帧速率的渲染循环。如果花费的时间超过允许的时间,那么循环显然会变慢。
感谢。
答案 0 :(得分:3)
怎么样
ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
ses.scheduleAtFixedRate(0, delay, TimeUnit.MILLI_SECONDS, new Runnable() {
public void run() {
// do something
}
});
或
long delay = ....
long next = System.currentTimeMillis();
while(running) {
// do something
next += delay;
long sleep = next - System.currentTimeMillis();
if (sleep > 0)
Thread.sleep(sleep);
}
答案 1 :(得分:0)
您需要考虑两种基本技术:
我可以推荐两个关于如何在java / android中实现类似游戏循环的好的tututorial。 关于基础知识的第一个是http://obviam.net/index.php/a-very-basic-the-game-loop-for-android/ 第二个重点是每秒帧数:http://obviam.net/index.php/the-android-game-loop/。我认为这些课程也适用于regualar java。