【问题标题】:How do I wait for two cursorloaders to return with data before starting third dependent on the return data?在根据返回数据开始第三个之前,如何等待两个游标加载器返回数据?
【发布时间】:2012-06-10 22:30:09
【问题描述】:

我有一个使用片段和内容提供程序的 android 应用程序来访问我的本地 sqlite 数据库。 Listviews 通常依赖于几个数据库查询,因此它们的显示基于查询结果。假设我有 3 个游标加载器,如何确保加载器 1 和加载器 2 在运行加载器 3 之前都已完成?

【问题讨论】:

  • Loaders 唯一ID(1、2 和3)并检查传递给onLoadFinished(...)Loader 的ID。维护全局booleans,例如boolean loader1Complete = false,并在完成后在该方法中将它们设置为true。然后检查booleans 是否都是true,如果是,则开始Loader 编号3。

标签: android sqlite android-fragments android-loadermanager android-cursorloader


【解决方案1】:

跟踪在计数器 (protected int loadersToRun,loadersCompleted=0;) 中启动的每个加载程序,并调用它们的每个 onLoadFinished 函数

public void checkLoadersFinished(){
    loadersCompleted++
    if(loadersCompleted==loadersToRun){
        //Start loader 3
        loadersCompleted=0;
    }
}

如果您需要动态工作,可以通过在onLoadFinished 中为一组加载程序ID 使用默认情况并运行checkLoadersFinished 来完成。我们使用 Treeset 为每个加载程序生成一个唯一 ID,以跟踪它们并在完成时将它们删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2017-11-23
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多