2011-01-24 2 views
0

私はlistView(画像とテキストを含む)を表示するアプリケーションを書きます。私はアダプターを書いた、私はビューをrecyleとビューホルダーを使用して、すべてがうまく動作しています(非常にスムーズではない)。アンドロイドガベージコレクタ情報

リストビューを表示するだけで、LogCatで1000個のオブジェクトがgc(12000〜3秒)で解放されていることがわかります あまりにも普通です。

enter image description here

最もgcedオブジェクトまたはGCのログ(または統計)のいくつかの種類のクラスが何であるかを知る方法はありますか?なぜ私のアプリケーションが即座にgcedされている新しいオブジェクトをスパムしているのか理解していますか?

答えて

1

が、私はそれのすべてはあなたのアダプターの内部で何をするかによって異なり :-(新しい答えを追加します。あなたは、XMLデータを持って書く。あなたが内部の解析を行う?DOMクラスは信じられないほどの量を生産します また、あなたが行う列挙(例:for (String x : xarray))では、多くのガーベッジが生成されます。文字列操作と同じです(DOMの解析は非常に遅いです)。 (StringBuilderを使用することを検討してください)関数ローカル変数を使用しないで、グローバルスコープに入れてください(そうでない場合は、そのゴミ) ビットマップを表示しますか?アダプタ内にビットマップオブジェクトを作成してImageViewに割り当てますか?ゆっくりとたくさんのごみも。

私は、一般的なごみと低速UI体験の落とし穴のすべてを推測します。誰でも? ;)

よろしく、 オリバー

1

これは通常、アプリまたはアプリだけでデータをダウンロードする場合に発生します。もしそうでなければ、私たちが見ることができるように実行しているコードを提供する必要があります。

ところで、あなたのについては何もしません。です。私はまだコメントできないとして

+0

はい表示されているすべてのデータがダウンロードされます。 私のArrayAdapterは、取得したxmlファイルからビルドされたリストから動作しています。しかし、私は、XMLのURLがキャッシュされている画像に対して一度だけ取得されることを確信しています。 – jpprade