动态壁纸中的定期动作

时间:2012-08-01 19:23:42

标签: android live-wallpaper

我正在努力确保我在我的动态壁纸中使用最有效/最合适的代码。目前,如果我有任何定期动作,我只需使用Runnables重复动作,然后在它完成postDelay后,它需要很长时间。

只有一个Runnable(例如drawFrame Runnable)和其他任何定期动作的工作方式更好吗?

例如:

int interval1 = 0;
int interval2 = 0;
drawFrame(){
  interval1++;
  interval2++;
  if (interval1==repeatInt1){
    interval1 = 0;
    // Periodic action 1
  }
  if (interval2==repeatInt2){
    interval2 = 0;
    // Periodic action 2
  }
// Regular drawFrame code here
}

我认为上面的方法会比运行3个runnables使用更少的资源,对吗?

为了澄清,我有多个动作(2个或更多)需要定期执行,但不一定都是同一个延迟。是否最好创建一个最短延迟的runnable然后只使用它作为一个中心线程来执行X个循环后的其他操作?

1 个答案:

答案 0 :(得分:0)

为什么不使用时间函数对间隔进行建模?如果您有两个操作,并且想要使用定义的时间段之间切换。

double period = 1000;
double time = (double) System.currentTimeMillis();
if ( Math.sine( 2*Math.PI * time / period) > 0)
  //State 1: do one thing
else
  //State 2: do the other

有许多简单的方法可以改变数学,这将允许您控制状态的数量,状态之间切换的顺序,以及每个状态在每个状态中花费的比例。