1

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

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

问题是我没有给用户任何关于我们在这个过程中的位置的反馈。

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

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

4

1 回答 1

2

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

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

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

  2. TextView显示在布局中心显示的灰色Loading...。当TextView数据已从网络检索并准备好显示在屏幕上时,最终隐藏。一些 Google 制造的应用程序选择此选项,例如 Google Analytics。

于 2012-08-02T23:12:50.370 回答