【问题标题】:Android: efficiency of CursorLoader-swapCursor vs ArrayList-notifyDataSetChanged?Android:CursorLoader-swapCursor vs ArrayList-notifyDataSetChanged 的​​效率?
【发布时间】:2016-02-26 09:14:36
【问题描述】:

我有一个通常包含

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

    • 对于 ListView,我调用 mAdapter.notifyDataSetChanged()

    • 我考虑实现一个加载器(SQLite 查询加载器)来使用加载器。加载器将观察数据变化,重新运行查询,我将使用mAdaptor.swapCursor() 来使用新的光标。

我的问题是:虽然这两种方法都是异步的,但以上哪一种更有效? (更短的加载时间等)?

【问题讨论】:

    标签: android sqlite loader


    【解决方案1】:

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

    1. file-system查询数据库读取比RAM慢很多(可以访问this link
    2. Adapter 有一些更有效的方法来通知数据集更改,例如 notifyItemRangeIserted() 等,ArrayList 将驻留在您的应用程序驻留的 RAM 中。

    所以我得出结论,在内存中缓存数据会更快,但您绝对应该小心堆大小内存泄漏

    【讨论】:

    • 您的回答具有误导性和模糊性 - 请不要劫持线程。我明确指出源是数据库。 Adapter 是各种适配器的基类!
    • @RumburaK,很明显您没有阅读我的答案,只是略读了一下!我说我有同样的问题,在以前的 SO 问题中没有找到答案,我写的都是基于我自己的知识,可能不正确! Adapter 我的意思是您选择扩展以位于您的data sourceview 之间,它可以是SimpleCursorAdapter 或基础Adapter 类的任何其他子类!跨度>
    猜你喜欢
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    相关资源
    最近更新 更多