Android:CursorLoader-swapCursor与ArrayList-notifyDataSetChanged的效率?

时间:2016-02-26 09:14:36

标签: android sqlite loader

我有一个通常包含< 100个条目。有时200-1000个条目。偶尔它可以包含更多,例如20000个条目。 从几个SQLiteDatabase表中查询数据。

  1. 我在ListView中加载并显示数据。
  2. 我在其他应用程序逻辑中执行各种读/写操作,例如在服务等中。
  3. 我执行的操作包括:移动一些项目,列表的开头或结尾,修改内容,删除它们,添加新内容等。 - 并保存数据库中的更改。

    • 对于ListView,我致电mAdapter.notifyDataSetChanged()

    • 我考虑实现一个Loader(SQLite查询加载器)来使用Loaders。加载器将观察数据更改,重新运行查询,我将使用mAdaptor.swapCursor()来使用新的Cursor。

  4. 我的问题是:虽然两种方法都是异步的,但上述哪种方法会更有效? (加载时间较短等)?

1 个答案:

答案 0 :(得分:0)

这也是我自己的问题,但我认为根据我的信息:

  1. file-system查询数据库的内容比RAM慢得多(您可以访问this link
  2. Adapter提供了一些更有效的方法来通知notifyItemRangeIserted()等数据集更改,ArrayList将位于RAM,因为您的应用程序所在。
  3. 所以我得出结论,在内存中缓存数据会更快但你绝对应该注意堆大小内存泄漏