私はカレンダー アプリを開発しており、カレンダー セルとして textview を使用しています。アプリの起動後に logcat を確認すると、Choreographer からの「76 フレームをスキップしました!アプリケーションはメイン スレッドで作業が多すぎる可能性があります」というメッセージが表示されます。多くのテキストビュー (120) を作成していることはわかっていますが、アプリのパフォーマンスに影響を与えずにカレンダーを作成するにはどうすればよいですか? イベントをサポートするカレンダーを作成する別の方法はありますか?
5 に答える
120 個のテキスト ビューは多くのように思えます。特に、数画面分のデータのように思えます。
データの複数の画面がある場合は、アダプター ビューの使用を検討するのが論理的です。たとえばListView
、 やGridView
. アダプタ ビューはビュー リサイクルを使用して、一度に使用されるビューの数を約 1 画面分に制限します。
カレンダーを作成しているため、事前にセルの数を認識しているため、セルを含むレイアウトを膨らませることを検討し、1 つのコマンドでレイアウト全体を設定してから、TextViews のテキストを入力するだけです。 ?
検索を行ったところ、次のリンクが見つかりました: http://developer.android.com/reference/android/view/Choreographer.html。これは、API 16 で導入された新しいクラスです。
Choreographer を使用すると、アプリは vsync に接続し、適切なタイミングでパフォーマンスを向上させることができます。
Android ビュー アニメーションは、同じ目的で内部的に Choreographer を使用します。つまり、アニメーションのタイミングを適切に調整し、パフォーマンスを向上させる可能性があります。
Choreographer はすべての vsync イベントについて通知されるため、Choreographer.post* API によって渡された Runnables の 1 つが 1 フレームの時間内に終了せず、フレームがスキップされるかどうかを知ることができます。
私の理解では、Choreographer はフレーム スキップのみを検出できます。なぜこれが起こるのかを知る方法はありません。
「アプリケーションがメイン スレッドで処理しすぎている可能性があります」というメッセージ。誤解を招く可能性があります。