【问题标题】:Android show a progress dialog before asyncTask [duplicate]Android在asyncTask之前显示一个进度对话框[重复]
【发布时间】:2014-05-14 18:51:47
【问题描述】:

这么简单的事情,但我遇到了一个大问题。

编辑:我希望我的 ProgressDialog 在其他类正在运行时运行 - 不要在 asyncTask 中调用,因为有多个 asyncTask 被调用。

我的主要活动(索引)调用另一个类 aTask,它调用 AsyncTask 从 Yelp 获取一些数据。当 aTask 返回数据时,index 开始一个新的活动。

我希望 index 在 aTask 运行时显示进度对话框。所以我使用来自here 的答案在索引中放置一个进度对话框。

但是,进度条只有在aTask完成后才会显示,完全违背了目的。

代码如下:

        mButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            ProgressDialog.show(IndexActivity.this, "Loading", "Wait while loading...");
            ATask at = new ATask(preferencesMap, IndexActivity.this);

            final ArrayList<Business> locations = at.getLocations();

            Intent intent = new Intent(IndexActivity.this, BTask.class);
            intent.putExtra("EXTRA_DIRECTIONS_STEPS", locations);
            intent.putExtra("EXTRA_MAP_LOCATIONS", locations);
            startActivity(intent);
        }
    });

【问题讨论】:

  • at.getLocations() 应该做什么?
  • 它只是返回一个包含一些位置数据的业务对象的 ArrayList
  • 我假设它调用execute,然后调用get,因为你提到了异步任务?
  • 有趣 - 我刚刚意识到 ATask 本身不是异步任务,而是调用另一个类。我的主要问题是我希望进度对话框在 ATask 之前开始,并在它返回后结束

标签: android android-asynctask progressdialog


【解决方案1】:

大多数工作是将Progress Dialog 添加到真正的异步任务而不是同步任务中。如果任务不在线程或其他异步事件中,您的计算机需要时间来执行进度对话框脚本并且不能。看看其他关于 SO 的问题,总是有一个线程。

【讨论】:

    【解决方案2】:

    This 应该是明确的答案,至少就我的情况而言。

    易于实现,即使您正在调用 asyncTasks 等也可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-31
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多