2012-04-02 11 views
4

私の主なアクティビティで、ListViewを使用していくつかのデータをリストし、すべてのI/O集約型ワーク(ロードサムネイル)がAsyncTaskにオフロードされていることを確認しました。実際、Galaxy Nexus上で実行する場合、実行するListAdapter.getView(int position、View convertView、ViewGroup parent)は0〜1 msしかかかりません。それでも、Galaxy NexusのListViewをスクロールすると、画面が10 FPSで実行されているように感じられ、実際にが遅いのAndroid 2.3.6を実行しているNexus Oneより遅く感じます。Abysmal ListView performance on Android ICS

リストビューをスムーズにスクロールさせる方法に関するヒントがあれば、ICSデバイスまたはICSデバイス前のいずれかに、私は非常に感謝しています。

+0

コードを表示してください。 – Snicolas

+0

ここで同じ問題があります。透過的なbackgrounsと透明に設定されたcacheColorHintのイメージを持つListViewだけです。プレICSデバイスで実際のパフォーマンス上の問題はありませんが、Galaxy Nexusでは実際には遅れています。 –

+0

はい! ImageViewsとTextViewsを含むListViewバックグラウンド、そして透明に設定されたcacheColorHintとして基本的に同じ設定をしています。パフォーマンスはちょうど...恥ずかしいです。 – Kai

答えて

2

でハードウェアアクセラレーションを有効にしてください、私はあなたのような同じ問題を持って、私の解決策は、アンドロイドを追加します:layerType =「ソフトウェアは、」レイアウトファイルでListViewのために、それは単にフル失うことなく、ハードウェアアクセラレーションを無効にしますホロのテーマ。 ここに私のコードを見ることができます:https://github.com/mariotaku/twidere ファイルはres/layout/refreshable_list.xmlです

+0

パフォーマンスはいくらか改善されていますが、Android 2.3.6搭載のNexus Oneで実行されている同じアプリと同じように「スムーズ」でしかありません。 Galaxy NexusのデュアルコアとICSのために持っていると言われているすべてのパフォーマンス調整の間には、これは大変残念です。 – Kai

+0

私は今、コンピュータを使用することはできませんが、android:layerTypeをnone(試したことはありませんが、これは役に立たないかもしれません)に設定してみてください。私たちができることの1つは、ビューの深さを減らす、ビューの変更をあまり頻繁に行わないなど、コードを最適化することです。プロジェクトのパフォーマンスを向上させようとします。 – mariotaku

0

は、マニフェスト

+1

有効になっていますが、役に立たないです。 – Kai

+0

ハードウェアアクセラレーションを無効にしてみます。 HAを無効にすると、リストビューのスクロールがずっとスムーズになります。 – ethangao