我想知道如何解决一个问题。
当我开始一项活动时,我使用AsyncTask
下载了一些数据。
当用户在菜单上选择一个选项时,我会使用缓存的数据。
如果在数据仍在下载时选择选项怎么办? 在不阻止UI的情况下等待数据的最佳方法是什么?
修改:我不想更改菜单/禁用该选项。我想在等待数据完成下载时显示一个微调器。
由于
答案 0 :(得分:3)
禁用/启用onMenuOpened()中的项目:
@Override
public boolean onMenuOpened(int feature, Menu menu) {
if (menu != null) {
menu.getItem(INDEX_FOR_THE_MENU_ITEM).setEnabled(stuffIsAvailable);
}
return super.onMenuOpened(feature, menu);
}
编辑 - 显示进度对话框:
ProgressDialog dialog = new ProgressDialog(context);
dialog.setMessage(context.getString(dialogTextResourceId));
dialog.show();
完成后不要忘记dialog.dismiss(
。
答案 1 :(得分:1)
您可以在按下菜单选项时调用AsyncTask.getStatus()
,如果它仍在运行,则显示ProgressDialog。
然后在AsyncTask.onPostExeute()
中,您可以告诉您的活动数据是否可用并取消微调器。
答案 2 :(得分:0)
启动下载时运行不可取消的进度对话框,下载完成后关闭。阅读ProgressDialog
课程。