2012-08-01 87 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