我有一个SQLite数据库,我必须不断地从中检索数据。可以在每次检索之间对数据进行更改。
我的目标是最大化应用程序性能,那么执行此检索的最快方法是什么?
我可以想象2:
不断打开和关闭新游标
查询开头的所有数据并将其存储在ArrayList中。更改数据时,使用indexOf
更改SQLite DB和ArrayList。
---- EDITED ----
我需要数据才能在Google地图中创建标记。
我考虑过使用CursorLoader,但因为我不需要与其他我不想使用内容提供商的应用进行交互。
创建自定义加载器是个好主意吗?
答案 0 :(得分:5)
简而言之,虽然并不总是那么简单,但最快的做事方法就是一次性。
不断地对数据库进行调用可以真正使您的应用程序性能瓶颈,特别是如果它是服务器而不仅仅是您的设备SQLite数据库。
根据您对数据的处理方式,您可以查看类似CursorAdapter
的内容,它处理数据库中行的显示,以及每次插入/更新行时,CursorAdapter将相应地更新ListView。它还处理打开/关闭/移动到下一个Cursor,使开发人员可以轻松阅读。
然而,再次尝试尽可能少地打电话。如果您坚持使用ArrayList:
onPause()
之类的方法执行此操作,因为它是可以杀死活动的最早方法之一。答案 1 :(得分:2)
CursorLoader
的完美用例。给定查询,它会使您的列表适配器与最新数据保持同步,假设您在数据库中发生更改时通知。它还可以方便地为您处理活动生命周期事件(即,它在活动结束时关闭光标,在暂停时停止更新等)。