私が書いているライブ壁紙アプリケーションでいくつかの問題が発生しています。Android:ライブ壁紙アプリケーションのパフォーマンス 'hickups'
私はレンダリングにOpenGL 1.0を使用しています。一般的に、私が得ているパフォーマンスはまともです。 Samsung Galaxy S2(2.3.4)では、フレーム制限なしで60 FPSを得ることができます。
しかし、時々私は他のフレームよりかなり大きいフレームを取得します(通常のフレームは33ms、スパイクフレームは約70-100msです)。これは定期的な間隔で、毎秒約1回発生します。
私のコードはすべてのフレームで全く同じ処理を行います。したがって、この動作は異常です。私のスレッドが何らかの理由でOSによってスワップ/遅延されているように見えるか、またはVMがちょっと遅く実行を開始するように見えます。
eglSwapBuffersが待つことはないので、減速はGPU処理によるものではありません。また、私のループで短命のオブジェクト(DDMS割り当てトラッカーで検証済み)を持たないようにしているので、自分のプロセスがGCを実行させないことも確かです。
興味深いのは、私が画面上に指を置くと、フレーム時間のスパイクがかなり小さくなる傾向があるということです。あたかもOSがこれのためにプロセスの優先順位を上げるかのように。
スパイクが発生したときに私のアニメーションが非常に悪く見えるので、この問題を解決することは非常に重要です。
他の誰かが同じ問題を経験しましたか?問題の原因となる可能性のあるヒントについては、大いに感謝しています。