カスタム ビュー キャンバス描画 (postInvalidate()) とHardwareAccelerationを使用して単純な 2D ゲームで作業しています。数週間のパフォーマンス分析の後、Interface Choreographer.FrameCallbackを介して VSYNC パルスと更新および描画操作を同期することにしました。それがスムーズな動きを得る正しい方法だと思います。
しかし、私はまだ途切れ途切れの動きを経験しています。systraceで分析したところ、BufferQueue と関係があることに気付きました。ダブル バッファリングが開始されるとすぐに、フレーム時間が 16 ミリ秒を超えます。いくつかの説明を付けて、トレースのスクリーンショットを作成しました。
描画操作全体は、SurfaceFlinger (コンシューマー) のバッファーが解放されて、独自の新しい空のバッファーがキューから取り出されるのを待ちます。
これが通常の動作なのか、それとも何が原因なのか教えていただけますか?