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

我的目标是最大程度地提高应用程序性能,那么什么是最快的方法呢?

我可以想象2:

  • 不断打开和关闭新游标
  • 在开始时查询所有数据,并将其存储在ArrayList中。更改数据时,请使用indexOf更改SQLite DB和ArrayList。

  • ----编辑----

    我需要这些数据才能在Google地图中创建标记。

    我已经考虑过使用CursorLoader,但是由于不需要与其他应用程序进行交互,因此我不想使用Content Providers。

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

    最佳答案

    简而言之,虽然并非总是那么简单,但最快的方法是一次完成所有工作。

    不断地往返于数据库的调用确实会使您的应用程序出现性能瓶颈,尤其是在服务器而不是仅设备SQLite数据库上。

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

    但是,再次尝试在尽可能少的呼叫中执行操作。如果您坚持使用ArrayList:

  • 首先对所有项目打个电话。
  • 遍历该光标并将项添加到数组列表。
  • 使用数组列表作为缓存。当然,您可以在每次更新列表时更新数据库(这可能是最安全的IMO),或者您可以遍历列表并在应用程序关闭时插入/更新/删除。如果您采用这种方法,请确保以onPause()之类的方法进行操作,因为它是可以杀死Activity的最早方法之一。
  • 10-07 19:25
    查看更多