2012-08-01 111 views
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个或更多),但不一定全部在相同的延迟下执行。最好是创建一个最短延迟的runnable,然后把它作为一个中心线程在X循环后执行其他动作?

回答

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 

有很多简单的方法来改变数学,让您控制状态的数量,在你状态之间切换的顺序,花费在每个状态多大比例各期。

+0

我不是真的想弄清楚如何在动作之间切换,这只是我可能有3个动作都在不断重复,但以不同的间隔。我应该创建一个最短间隔(drawFrame)的runnable,然后将它用作另外两个的计时器吗? – Jwc24678 2012-08-01 19:42:35