ハードウェアアクセラレーションを使用する(1)ではハードウェアアクセラレーションの実装方法を紹介しました。
今回はハードウェアアクセラレーションが最大限に効果を発揮させるために検討しなければならないことを紹介します。
詳細は以下から。
ハードウェアアクセラレーションの動作を最適化するために
ハードウェアアクセラレーションは描画やアニメーションの処理を高速化してくれますが、どんな場合でも常に100%の効果が得られるわけではありません。
ハードウェアアクセラレーションの効果を最大限に引き出す為に以下のことを考え、アプリケーションの開発を行ってください。
- Viewの数は最小限に抑える
- 過度なViewの配置はアプリケーションの動作を重くする要因です。最小限のViewの配置にすることはアプリケーションの動作を最適化する最も簡単で効率的な方法です。
- Viewは極力入れ子にしない
- Viewを入れ子にし過ぎていないか確認してみてください。Viewを入れ子にし、レイヤーを増やすことはアプリケーションの動作を重くします。本当に入れ子にする必要があるかどうかを十分に検討し、極力最小限のレイヤーに抑えれるよう工夫しましょう。
- 描画メソッド内でレンダリングオブジェクトを作成しない
- 描画のイベントが実行される度に新しいPaintオブジェクトやPathオブジェクトを作成してしまうことはよくある間違いです。これはGCの動作を阻害します。
- 頻繁に形状を変更しない
- 描画したオブジェクトの形状を変更する度にハードウェアのパイプラインはは新しいマスクを作成しなければなりません。
- 頻繁にビットマップを変更しない
- ビットマップを変更する度にGPUはテクスチャを更新しなければなりません。
- 透過効果(アルファ)は注意して使用する
- View#setAlphaメソッド、AlphaAnimation、ObjectAnimatorのalphaプロパティは描画のために通常の倍以上のバッファが必要になります。大きいViewにalphaを使用する場合はLAYER_TYPE_HARDWAREの使用を検討して下さい。
アニメーションに効果的なハードウェアアクセラレーション
アニメーションを実行する場合にハードウェアアクセラレーションを使用すると、非常にエクスペリエンスな体験をユーザーに提供することが可能になります。複雑なViewをアニメーションさせるとどうしても60fps相当のパフォーマンスを維持する事が難しくなります。
アニメーションの実行によるパフォーマンス低下に悩まされる場合はハードウェアアクセラレーションの使用を検討しましょう。