我一直在考虑在我的游戏动画中实现postDelay()
以使其更加流畅。我担心的是postDelay()
每次执行时都会创建一个new Runnable
。由于我的游戏需要经常执行postDelay()
,因此每次创建new Runnable
会产生大量垃圾吗?或者即使它没有,创建新的Runnable会降低性能吗?
因此,在这种情况下,在长时间执行常常执行的情况下使用postDelay()
是否合适?
答案 0 :(得分:1)
您可以对所有Runnable
来电使用单postDelayed
个实例。
但我认为循环更适合游戏,它是一种标准模式,就像在这篇文章中所说:How to appear and disappear an object on screen using game loop for every five second
答案 1 :(得分:1)
每次执行postDely()
时都无需创建新的runnanable
private static int LOOP_TIME = 5000;
private Handler handlerWork;
private Runnable runnableWork = new Runnable() {
@Override
public void run() {
//do some work
handlerWork.postDelayed(runnableWork, LOOP_TIME);
}
}
@Override
protected void onResume() {
super.onResume();
if (handlerWork == null)
handlerWork = new Handler();
handlerWork.postDelayed(runnableWork, LOOP_TIME);
}
@Override
protected void onPause() {
super.onPause();
if (handlerWork != null)
handlerWork.removeCallbacks(runnableWork);
}