我希望使用CursorLoader
向数据库发出2个查询,并在向屏幕显示数据之前使用特定顺序。更具体地说,我想在第一个查询返回其数据后才执行第二个查询。
我所知道的是:
我执行第一个查询mLoaderManager.initLoader(TASK_LOADER_1, null, this);
我在onLoadFinished(Loader<Cursor> loader, Cursor data)
得到了结果,然后我从那里创建了一个新的Loader mLoaderManager.initLoader(TASK_LOADER_2, null, this);
来执行第二个查询
当第二个查询返回时,我显示数据。
使用Loaders有更有效的方法吗?如果我想连续做更多查询怎么办?我应该遵循相同的模式吗?
谢谢。
答案 0 :(得分:1)
是的,从我看来,实施是可以的。在使用initLoader
函数启动加载器时,您指定了与加载器关联的id,并且您可以追溯到哪个加载器回调已完成从与您的onLoadFinish
方法匹配的数据库中获取数据loader.getId()
方法。
如果是顺序数据库调用(如果这是您的确切用例),则需要在前一个数据库调用完成执行时调用下一个数据库调用,就像您现在这样做一样。
对于一系列多个顺序数据库调用,您可以遵循相同的结构。只需维护一个队列即可跟踪后续的数据库调用。