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

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

我想使用 CursorLoader 对数据库进行 2 次查询, 在将数据显示到屏幕之前具有特定顺序。更具体地说,我只想在第一个查询返回其数据后才执行第二个查询。

我所知道的是:

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

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

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

是否有更有效的方法使用加载程序来执行此操作?如果我想连续进行更多查询怎么办?我应该遵循相同的模式吗?

谢谢。

最佳答案

是的,从我的角度来看,实现没问题。使用 initLoader 启动加载器时函数,您正在指定一个与加载程序关联的 id,您可以在 onLoadFinish 中追溯哪个加载程序回调已完成从数据库中获取数据。匹配相同的方法 loader.getId()方法。

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

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

关于android - 如何使用 CursorLoader 进行多个串行数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49969566/

相关文章:

android - android webview 的 TargetDpi 替代品

android - 如何在不使用 CONFLICT_REPLACE 的情况下获得 "insert or update"行为?

java - Android 中的 SQLITE 获取语句不起作用

android - 为什么我的 OnLocationChanged() 永远不会被调用?

java - 如何从 managedQuery 过渡到 LoaderManager/CursorLoader?

android - 更新jetpack compose中图像中的位图

java - CONNECTED_STRIPE_ACCOUNT_ID 是什么?如何从android平台获取它?

android - 无法更新 RecyclerView 中的 TextView 字段

android - 带有 LoaderManager 的多个 Loader,没有得到正确的 Loader

android - ImageSpan 中的可绘制选择器不起作用?