等待下载数据的模式

发布于 2024-11-04 02:53:39 字数 235 浏览 1 评论 0原文

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

当我启动活动时,我使用 AsyncTask 下载一些数据。

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

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

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

谢谢

I am wondering how I should solve one issue.

When I start an Activity, I download some data using an AsyncTask.

When the user selects an option on the menu, I use the cached data.

What if he selects the options while data is still downloading?
What is the best way to wait for the data without blocking the UI?

edit: I don't want to change the menu/make the option disabled. I want to show a spinner while waiting for the data to finish its download.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

最笨的告白 2024-11-11 02:53:39

禁用/启用 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() 它。

Disable/enable the items in the 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);
  }

EDIT - showing a progress dialog:

ProgressDialog dialog = new ProgressDialog(context);
dialog.setMessage(context.getString(dialogTextResourceId));
dialog.show();

Don't forget to dialog.dismiss() it when you're done.

痞味浪人 2024-11-11 02:53:39

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

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

You can call AsyncTask.getStatus() when the menu option is pressed and if it is still running then display the ProgressDialog.

Then in AsyncTask.onPostExeute() you can tell your Activity the data is available and dismiss the spinner.

倾其所爱 2024-11-11 02:53:39

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

Run an uncancellable progress dialog when the download is initiated, dismiss once the download is done. Read up on the ProgressDialog class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文