0

パフォーマンスに関する簡単な質問があります。リストビューにデータを入力するListViewアダプターがあり、sqliteデータベースを開いて、ビューの入力の最後に閉じ、SQLiteデータベースのリスト行に関する情報を入力します。主にスクロールするときにこれを行うと、パフォーマンスが大幅に低下することに気づきました。これは理にかなっています。スクロールのパフォーマンスをどのように改善できるのか疑問に思っています。データベースに約3回クエリします。

Database db = new Database(context);
db.open();
viewHolder.first.setText(db.queryFirst());
viewHolder.second.setText(db.querySecond());
viewHolder.third.setText(db.queryThird());
db.close();

DBへの参照をインスタンス変数として保持し、クエリを実行するときに開いたり閉じたりする必要がありますか、それともこれをどのように行う必要がありますか?

4

2 に答える 2

2

スクロールのパフォーマンスをどのように改善できるのか疑問に思っています。データベースに約3回クエリします。

アダプタ全体についてデータベースに1回クエリすることをお勧めします。現在、行ごとに3つのクエリを送信していますが、いずれもキャッシュされていません。ドライブからの読み取りは遅いプロセスです。カーソルは大量のデータを非常に効率的にフェッチするように設計されており、カーソルアダプターは可能な限り少ないリソースを使用するように設計されています。1つのカーソルとCursorAdapterを使用すると、ユーザーはパフォーマンスの低下に気付かずにスクロールできます。

于 2013-03-18T23:56:15.990 に答える
0

ORMLiteと呼ばれるライブラリもあり、データベースを非常に簡単に操作してリストを取得できます。つまり、最初に配列をロードし、スクロールパフォーマンスの問題は発生しません。これをデータベースの遅延読み込みセクションと組み合わせると、スクロールのパフォーマンスをシームレスに向上させることができます。

于 2013-03-19T01:07:39.260 に答える