如何使用CursorLoader进行多个串行数据库查询

时间:2018-04-22 18:51:44

标签: android android-sqlite android-loadermanager android-loader

我希望使用CursorLoader向数据库发出2个查询,并在向屏幕显示数据之前使用特定顺序。更具体地说,我想在第一个查询返回其数据后才执行第二个查询。

我所知道的是:

  1. 我执行第一个查询mLoaderManager.initLoader(TASK_LOADER_1, null, this);

  2. 我在onLoadFinished(Loader<Cursor> loader, Cursor data)得到了结果,然后我从那里创建了一个新的Loader mLoaderManager.initLoader(TASK_LOADER_2, null, this);来执行第二个查询

  3. 当第二个查询返回时,我显示数据。

  4. 使用Loaders有更有效的方法吗?如果我想连续做更多查询怎么办?我应该遵循相同的模式吗?

    谢谢。

1 个答案:

答案 0 :(得分:1)

是的,从我看来,实施是可以的。在使用initLoader函数启动加载器时,您指定了与加载器关联的id,并且您可以追溯到哪个加载器回调已完成从与您的onLoadFinish方法匹配的数据库中获取数据loader.getId()方法。

如果是顺序数据库调用(如果这是您的确切用例),则需要在前一个数据库调用完成执行时调用下一个数据库调用,就像您现在这样做一样。

对于一系列多个顺序数据库调用,您可以遵循相同的结构。只需维护一个队列即可跟踪后续的数据库调用。