什么是更快 - 一个Cursor或ArrayList?

Mau*_*riF 3 java sqlite android arraylist cursor

我有一个SQLite数据库,我必须不断从中检索数据.可以对每次检索之间的数据进行更改.

我的目标是最大化应用程序性能,那么执行此检索的最快方法是什么?

我可以想象2:

  • 不断打开和关闭新游标

  • 查询开头的所有数据并将其存储在ArrayList中.更改数据时,请使用更改SQLite DB和ArrayList indexOf.

----编辑----

我需要数据在谷歌地图中创建标记.

我考虑使用CursorLoader,但因为我不需要与其他应用程序交互,我不想使用内容提供商.

创建自定义加载器是个好主意吗?

Ada*_*331 5

简而言之,虽然并不总是那么简单,但最快的做事方法就是一次性完成.

不断地从数据库进行调用可以真正使您的应用程序性能瓶颈,特别是如果它是服务器而不仅仅是您的设备SQLite数据库.

根据您对数据的处理方式,您可以查看类似于CursorAdapter处理数据库中行的显示的内容,每次插入/更新行时,CursorAdapter都会相应地更新ListView.它还处理打开/关闭/移动到下一个Cursor,使开发人员可以轻松阅读.

但是,再次尝试尽可能少地打电话.如果您坚持使用ArrayList:

  • 在所有项目的开头打一个电话.
  • 遍历该游标并将项添加到数组列表中.
  • 使用数组列表作为缓存.当然,您可以在每次更新列表时更新数据库(这可能是最安全的,IMO),或者您可以循环浏览列表并在应用程序关闭时插入/更新/删除.如果采用这种方法,请确保使用类似的方法onPause(),因为它是可以杀死活动的最早方法之一.