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

How to do mulitple serial DB queries with CursorLoader

我想使用 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. 第二次查询时returns我显示数据

有没有更有效的方法来使用加载器来做到这一点?如果我想连续进行更多查询怎么办?我应该遵循相同的模式吗?

谢谢。

是的,我认为实施还不错。在使用 initLoader 函数启动加载程序时,您指定了一个与加载程序关联的 id,您可以在匹配相同的 onLoadFinish 方法中追溯哪个加载程序回调已完成从数据库中获取数据loader.getId() 方法。

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

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