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 次。

我建议为整个适配器查询一次数据库。目前,您正在为每一行发送三个查询,并且没有一个被缓存。从驱动器读取是一个缓慢的过程,Cursor 旨在非常有效地获取大量数据,CursorAdapter 旨在使用尽可能少的资源。使用一个 Cursor 和一个 CursorAdapter 将允许用户滚动而不会注意到任何性能损失。

于 2013-03-18T23:56:15.990 回答
0

还有一个名为 ORMLite 的库,它允许您非常轻松地操作数据库并返回一个列表,这意味着您首先加载数组并且您没有任何滚动性能问题。这与数据库的延迟加载部分相结合,将允许您无缝提高滚动性能。

于 2013-03-19T01:07:39.260 回答