2

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

当我开始一个活动时,我使用一个AsyncTask.

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

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

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

谢谢

4

3 回答 3

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() 它。

于 2011-05-01T18:28:15.320 回答
1

您可以AsyncTask.getStatus()在按下菜单选项时调用,如果它仍在运行,则显示 ProgressDialog。

然后,AsyncTask.onPostExeute()您可以告诉您的 Activity 数据可用并关闭微调器。

于 2011-05-01T18:51:57.787 回答
0

启动下载时运行不可取消的进度对话框,下载完成后关闭。阅读ProgressDialog课堂。

于 2011-05-01T19:00:54.663 回答