【问题标题】:Android ASyncTask not displaying dialog in onPreExecute() when using get() to return value使用 get() 返回值时,Android ASyncTask 未在 onPreExecute() 中显示对话框
【发布时间】:2012-04-04 16:57:40
【问题描述】:

我需要从 ASyncTask 向主线程返回一个值,所以我使用了 get() 方法,以便主线程等待直到后台线程运行。

time = mFetchServerDate.execute().get();

但是,在我的 ASyncTask 中,我在 onPreExecute() 方法中打开了一个进度对话框,当我不使用 get() 时,它按预期工作,但是当我将它添加回它时,它只会挂起应用程序,显示对话框几分之一秒然后回到主线程。

@Override 
protected void onPreExecute(){
   super.onPreExecute();
   pd = ProgressDialog.show(mContext, "", "", true, false);
}

【问题讨论】:

  • 暂停负责显示对话框的主线程时如何显示..\
  • 请不要在 UI 线程上使用 get()。在 asyncTask 完成之前,您可以使进度对话框不可取消或禁用 ui 元素。
  • 很公平,我最终不需要从服务器获取日期

标签: android android-asynctask


【解决方案1】:

如果你使用了get() asyncTask 方法,我不确定它是否不起作用。

无论如何你都可以使用this.runOnUiThread(action) ;当您需要在 AsyncTaks 等线程中更新 UI 时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    相关资源
    最近更新 更多