0

ライブ壁紙で最も効率的で適切なコードを使用していることを確認しようとしています。現在、定期的なアクションがある場合は、Runnablesを使用してアクションを繰り返し、それが完了した後、必要な期間、postDelayを実行します。

drawFrame RunnableなどのRunnableを1つだけにして、他の定期的なアクションのためにそれを処理する方がよいでしょうか。

例えば:

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

時間関数を使用して間隔をモデル化しないのはなぜですか? 2 つのアクションがあり、定義された期間を使用して切り替える場合。

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 に答える