gpt4 book ai didi

java - 哪个更快 - Cursor 或 ArrayList?

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:16 24 4
gpt4 key购买 nike

我有一个 SQLite 数据库,我必须不断地从中检索数据。每次检索之间可能会对数据进行更改。

我的目标是最大限度地提高应用性能,那么最快的检索方法是什么?

我可以想象2:

  • 不断打开和关闭新游标

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

---- 已编辑----

我需要数据在谷歌地图上创建标记。

我考虑过使用 CursorLoader,但由于我不需要与其他应用交互,所以我不想使用内容提供程序。

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

最佳答案

简而言之,虽然事情并不总是那么简单,但最快的方式是同时完成所有事情。

不断地与数据库进行调用和从数据库调用确实会使您的应用程序性能瓶颈,尤其是当它是针对服务器而不仅仅是您的设备 SQLite 数据库时。

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

但是,再次尝试在尽可能少的调用中完成任务。如果您坚持使用 ArrayList:

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

关于java - 哪个更快 - Cursor 或 ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29989934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com