处理程序postDelayed()新的Runnable创建垃圾?

时间:2014-11-28 08:24:37

标签: android android-handler

我一直在考虑在我的游戏动画中实现postDelay()以使其更加流畅。我担心的是postDelay()每次执行时都会创建一个new Runnable。由于我的游戏需要经常执行postDelay(),因此每次创建new Runnable会产生大量垃圾吗?或者即使它没有,创建新的Runnable会降低性能吗?

因此,在这种情况下,在长时间执行常常执行的情况下使用postDelay()是否合适?

2 个答案:

答案 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);
}