android - 以菊花链方式连接 Android Loader 是个坏主意吗?

标签 android android-progressbar android-loadermanager android-loader

我需要从 2 个在线来源获取数据,并希望在这样做时显示每个来源的进度。收集数据后,我可以填充 ListView 。

我当前的实现是 MyActivity 实现 LoaderCallbacks,后者又创建 MyDataLoader 的实例(一个扩展 AsyncTaskLoader 的类)。在 MyDataLoader 的 loadInBackground 方法中,它从所有来源获取数据并填充 Sqlite 数据库。然后可以在整个过程中使用此数据库。

问题是我没有就我们在流程中所处的位置向用户提供任何反馈。

所以我在考虑使用 getLoaderManager().initLoader 以某种方式菊花链式加载器来创建我的加载器,然后一次迭代加载器管理器中的加载器。当每个加载程序完成并返回到 onLoadFinished 时,我有机会设置 progressDialog 的文本以指示进度。

这是个坏主意吗?有没有更简单更好的方法?

最佳答案

这是不可能的,因为 Loader 会在不同线程的后台加载数据...数据不会“顺序”加载,因此不会在 onLoadFinished 中显示进度让您准确了解实际取得了多少进展。

所有用户需要知道的是数据正在后台加载。在我看来,即使启动整个对话框也有点矫枉过正,有点破坏用户体验。我想到的两个选择是:

  1. 在布局或操作栏中显示不确定的进度图标。

  2. 在布局的中心显示一个灰色的 TextView,上面写着 Loading...。当从 Web 检索数据并准备好在屏幕上显示时,TextView 最终被隐藏。多个 Google 制造的应用选择此选项,例如 Google Analytics。

关于android - 以菊花链方式连接 Android Loader 是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11787008/

相关文章:

java - 如何显示dailymotion云上传的进度条

java - 使用 11 之前的 Loader em API 版本

android - 如何在 Android N+ 中禁用 Activity 的多窗口模式

Android - 用于静态数据的 XML 或 SQLite

Android ) 首次启动时出现 GCM token 计时问题

android - fragment View 异步更新 : ImageView not updating but other childs are getting updated in the view

Android 3.0 - 究竟使用 LoaderManager 实例有什么优势?

c# - 在android和windows之间同步文件的最佳方式

android - Firebase 数据库每次读取时都返回 null

android - Android 中带倒数计时器的圆形进度条