等待下载数据的模式

时间:2011-05-01 18:16:32

标签: android design-patterns android-ui

我想知道如何解决一个问题。

当我开始一项活动时,我使用AsyncTask下载了一些数据。

当用户在菜单上选择一个选项时,我会使用缓存的数据。

如果在数据仍在下载时选择选项怎么办? 在不阻止UI的情况下等待数据的最佳方法是什么?

修改:我不想更改菜单/禁用该选项。我想在等待数据完成下载时显示一个微调器。

由于

3 个答案:

答案 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课程。