0

我正在努力确保在我的动态壁纸中使用最有效/最合适的代码。目前,如果我有任何周期性动作,我只需使用 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 个可运行文件使用更少的资源,对吗?

为了澄清,我有多个动作(2个或更多)需要定期执行,但不一定都在相同的延迟。最好创建一个延迟最短的可运行文件,然后在 X 次循环后将其用作中心线程来执行其他操作?

4

1 回答 1

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

有很多简单的方法可以改变数学,这些方法可以让你控制状态的数量、在状态之间切换的顺序以及在每个状态中花费的每个时间段的比例。

于 2012-08-01T19:30:37.980 回答