2011-07-13 11 views
2

私が書いているアプリでは、ユーザーのために表示したい統計情報がたくさんあります。Android - ビューのカウンターを効率的に更新する

統計情報には、特定のモジュールが最後に実行された時刻、次回に実行された時刻、サーバーとの最後の通信が行われたとき、次に次の通信が行われる時刻が含まれます。

これに加えて、メモリ使用量(単純なメモリ使用量、実際の使用量を測定しない)などがあります。

メモリー使用量などは数秒ごとに更新でき、問題は発生しませんが、少なくとも秒ごとに更新する必要があります(カウンター用)。
毎秒(または500msの周期でさえ)実行すると、不規則な更新/スキップされた秒が発生するので、今は300msの周期で実行します。

しかし、私のアプリは起動時に遅れが出始めたことに気づきました。
いくつかのプロファイリングの後で、それは時間の70%を取っているサイズ変更が必要なビューで、文字列フォーマッタ(カウンタをフォーマットするため)はかなり残りの部分を取ります。

CPUを使用しているのとは別に、私はlogcatにGC_CONCURRENTが数秒おきに表示されます。

これを効率的に解決するためのヒントを教えてください。

+0

愚かな質問:計算に別のスレッドを使用していますか? –

+0

いいえ、主なUIスレッドからのみ行うことができるビューのサイズを変更するのに大部分の時間を費やしているので、私がやっていれば問題になるとは思わないでしょう。 –

+0

あなたは、UIスレッドでプロセッサ集中型の作業を行うべきではありません。 –

答えて

0

私は自分のタイマーを書いて短時間でスリープし、合格。

このようにして、短いsleepTimeを選択すると許容される火災間隔は[period, period+sleepTime)になります。

私は「5分前」と言っていたので、1分ごとに1発、毎秒2発のタイマーが2時間あります。

0

フィギュアのサイズ変更が少なくて済むように再構成できますか?例えば、要素の幅をfill_screenに設定するか、最長の文字列サイズより大きいDPサイズを設定します。

+0

私はその列に最大幅でtableviewsを使用していますが、とにかくそれは問題ではないと思います。 –

関連する問題