Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 实时壁纸中的周期性动作_Android_Live Wallpaper - Fatal编程技术网

Android 实时壁纸中的周期性动作

Android 实时壁纸中的周期性动作,android,live-wallpaper,Android,Live Wallpaper,我正在努力确保在我的实时壁纸中使用最有效/最合适的代码。目前,如果我有任何周期性的动作,我只需要使用Runnables来重复动作,然后在动作完成后延迟它所需要的时间 只有一个Runnable(例如一个drawFrame Runnable)更好,并且只为任何其他周期性动作使用它吗 例如: int interval1 = 0; int interval2 = 0; drawFrame(){ interval1++; interval2++; if (interval1==repeatIn

我正在努力确保在我的实时壁纸中使用最有效/最合适的代码。目前,如果我有任何周期性的动作,我只需要使用Runnables来重复动作,然后在动作完成后延迟它所需要的时间

只有一个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个Runnable要少,对吗


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

为什么不使用时间函数对间隔进行建模?如果您有两个操作,并且希望使用定义的期间在这两个操作之间切换

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

有很多简单的方法可以改变数学,让你可以控制状态的数量,在状态之间切换的顺序,以及在每个状态中每个周期所占的比例。

我不是真的想弄清楚如何在动作之间切换,只是我可能有3个动作都在重复,但间隔不同。我是否应该创建一个最短间隔(drawFrame)的runnable,然后将其用作其他两个的计时器?