【问题标题】:When to use cursor loaders?什么时候使用游标加载器?
【发布时间】:2013-10-29 14:00:23
【问题描述】:

当我使用 SQLite 带来我的数据并使用游标和适配器时,我应该使用游标加载器吗??这是最佳做法吗?我不太清楚何时使用游标加载器。只有当我的应用程序与其他应用程序共享数据时,我才应该使用它吗?我的问题来了,因为使用游标 + 适配器 + listView 对我来说真的很烦人;有时 notifyDataSetChanged 有效,有时无效,所以有时真的很棘手。我开始阅读有关游标加载器的信息,但我不确定这是否可以特别解决这个问题,或者我是否可以将其用作解决方法。

任何澄清将不胜感激!

谢谢各位。

【问题讨论】:

    标签: android android-cursorloader


    【解决方案1】:

    使用 Loaders 确保所有游标操作都是异步完成的,从而消除了阻塞 UI 线程的可能性。

    当使用 CursorAdapter 时,不要使用 notifyDataSetChanged,而是使用:

    db.updateData();
    yourCursor = db.getData();  
    yourAdapter.changeCursor(yourCursor);
    

    【讨论】:

    • 那么,我应该使用游标加载器吗?即使我的应用不会与其他应用共享其数据库?
    • 游标加载器不启用数据库共享。如果您想与其他应用程序共享数据库,请使用 ContentProvider 参见this。游标加载器是在 Android 3.0 中引入的,以促进异步游标操作。如果您只读取小块数据是可以的,请不要使用游标加载器。阅读this 以了解更多关于游标加载器的信息
    • 我提到数据库共享是因为游标加载器使用 contentProviders 和 contentPorviders 正如你所说的用于在应用程序之间共享数据。这就是为什么我很困惑,但不,我不需要共享数据库。那么,只有在数据库很大的情况下,我才应该使用游标加载器吗?
    • 我可以在不使用 contentProviders 的情况下使用光标加载器吗?
    • 没有。但是你可以做一些类似的事情,见this
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2019-01-29
    • 2012-10-26
    • 1970-01-01
    • 2013-02-27
    • 2011-11-25
    相关资源
    最近更新 更多