我需要在线获取2个来源的数据,并希望在我这样做时显示每个数据的进度。收集数据后,我可以填充列表视图。
我当前的实现是MyActivity实现了LoaderCallbacks,而LoaderCallbacks又创建了一个MyDataLoader实例(一个扩展AsyncTaskLoader的类)。在MyDataLoader的loadInBackground方法中,它从所有源获取数据并填充Sqlite数据库。然后可以在整个过程中使用此数据库。
问题在于我没有向用户提供有关我们在过程中的位置的任何反馈。
所以我想用菊花链式加载器使用getLoaderManager()。initLoader来创建我的加载器,然后一次遍历loadermanager中的加载器。当每个加载器完成并返回onLoadFinished时,我有机会设置progressDialog的文本以指示进度。
这是个坏主意吗?有更简单更好的方法吗?
答案 0 :(得分:2)
这是不可能的,因为Loader
在后台加载数据在不同的线程上...数据没有“按顺序”加载,因此显示onLoadFinished
的进度不会给你准确的图片实际取得了多大进展。
用户需要知道的是,数据是在后台加载的。即使启动整个对话框也有点矫枉过正,并且在我看来会破坏用户体验。我最喜欢的两个选择是:
在布局或操作栏中显示不确定的进度图标。
在布局的中心显示一个显示为TextView
的灰色Loading...
。当从Web检索数据并准备好在屏幕上显示时,TextView
最终被隐藏。一些Google制作的应用选择此选项,例如Google Analytics。