【发布时间】: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 元素。
-
很公平,我最终不需要从服务器获取日期