我需要从 2 个在线来源获取数据,并希望在这样做时显示每个来源的进度。收集数据后,我可以填充 ListView 。
我当前的实现是 MyActivity 实现 LoaderCallbacks,后者又创建 MyDataLoader 的实例(一个扩展 AsyncTaskLoader 的类)。在 MyDataLoader 的 loadInBackground 方法中,它从所有来源获取数据并填充 Sqlite 数据库。然后可以在整个过程中使用此数据库。
问题是我没有就我们在流程中所处的位置向用户提供任何反馈。
所以我在考虑使用 getLoaderManager().initLoader 以某种方式菊花链式加载器来创建我的加载器,然后一次迭代加载器管理器中的加载器。当每个加载程序完成并返回到 onLoadFinished 时,我有机会设置 progressDialog 的文本以指示进度。
这是个坏主意吗?有没有更简单更好的方法?
最佳答案
这是不可能的,因为 Loader
会在不同线程的后台加载数据...数据不会“顺序”加载,因此不会在 onLoadFinished
中显示进度让您准确了解实际取得了多少进展。
所有用户需要知道的是数据正在后台加载。在我看来,即使启动整个对话框也有点矫枉过正,有点破坏用户体验。我想到的两个选择是:
在布局或操作栏中显示不确定的进度图标。
在布局的中心显示一个灰色的
TextView
,上面写着Loading...
。当从 Web 检索数据并准备好在屏幕上显示时,TextView
最终被隐藏。多个 Google 制造的应用选择此选项,例如 Google Analytics。
关于android - 以菊花链方式连接 Android Loader 是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11787008/