198

の最新バージョンをインストールし、SDK (API 16)最新の ADT を入手しました。これらのメッセージが logcat に表示されるようになりましたが、これまでに見たことがないことは確かです。誰かがこれについて考えを持っていますか?

06-29 23:11:17.796: 私/Choreographer(691): 647 フレームをスキップしました! アプリケーションがメイン スレッドで処理しすぎている可能性があります。

検索を行ったところ、次のリンクが見つかりました: http://developer.android.com/reference/android/view/Choreographer.html。これは、API 16 で導入された新しいクラスです。

すべての処理がAsyncTasks.

4

5 に答える 5

138

Choreographer を使用すると、アプリは vsync に接続し、適切なタイミングでパフォーマンスを向上させることができます。

Android ビュー アニメーションは、同じ目的で内部的に Choreographer を使用します。つまり、アニメーションのタイミングを適切に調整し、パフォーマンスを向上させる可能性があります。

Choreographer はすべての vsync イベントについて通知されるため、Choreographer.post* API によって渡された Runnables の 1 つが 1 フレームの時間内に終了せず、フレームがスキップされるかどうかを通知できます。

私の理解では、Choreographer はフレーム スキップのみを検出できます。なぜこれが起こるのかを知る方法はありません。

「アプリケーションがメイン スレッドで処理しすぎている可能性があります」というメッセージ。誤解を招く可能性があります。

于 2012-07-04T12:34:24.377 に答える
24

これは、多くの状況でLogCatに表示される可能性のある情報メッセージの場合です。

私の場合、プログラムでXMLレイアウトファイルからいくつかのビューを膨らませていたときに発生しました。メッセージ自体は無害ですが、アプリが使用を許可されているすべてのRAMを使用し、巨大なForceCloseが発生するという後の問題の兆候である可能性があります。私は彼のログWARN/INFO /ERRORFreeを見るのが好きな種類の開発者に成長しました。;)

だから、これは私自身の経験です:

私はメッセージを受け取りました:

10-09 01:25:08.373: I/Choreographer(11134): Skipped XXX frames!  The application may be doing too much work on its main thread.

... XMLからビューを膨らませ、そのフィールド(画像、テキストなど)にREST /の応答からのデータを入力することにより、独自のカスタム「超複雑なマルチセクションリスト」を作成していたときJSON Webサービス(ページング機能なし)このビューは、LinearLayout(ScrollView内で垂直方向)に正しい順序ですべてを追加することにより、行、サブセクションヘッダー、およびセクションヘッダーとして機能します。これはすべて、クリック可能な要素を使用してlistViewをシミュレートするためのものです...しかし、それは別の質問です。

責任ある開発者として、システムリソースを使用してアプリを非常に効率的にしたいので、リストのベストプラクティス(リストがそれほど複雑でない場合)は、ローダーでListActivityまたはListFragmentを使用し、ListViewにアダプターを入力することです。これはおそらくより効率的です。実際はそうです。リストがそれほど複雑でない場合は、常に実行する必要があります。

解決策:「大きな応答サイズ」を防ぐためにREST / JSON Webサービスにページングを実装し、AsyncTaskに「行」、「セクションヘッダー」、「サブセクションヘッダー」ビューを追加してメインを維持するコードをラップしましたスレッドクール。

だから...私の経験が、この情報メッセージで頭を悩ませている他の誰かに役立つことを願っています。

ハッピーハッキング!

于 2012-11-09T02:16:29.430 に答える
11

これは通常、とにかく遅いことが知られているエミュレーターを使用してデバッグするときに発生します。

于 2012-08-10T18:57:10.837 に答える
11

私の場合、シャーロック アクション バーの進行状況バーが不確定になると、これらのメッセージが表示されます。私のライブラリではないので、Choreographer の出力を非表示にすることにしました。

次のフィルター式を使用して、Choreographer の出力を Logcat ビューに非表示にすることができます。

tag:^((?!振付師).*)$

他の場所で説明されている正規表現を使用しました: 単語を含まない行に一致する正規表現?

于 2012-11-16T13:41:36.850 に答える