【发布时间】:2012-10-30 16:03:38
【问题描述】:
我想使用 AsyncTask 执行服务器登录,并在连接结束前显示进度对话框。
由于请求可能没有响应,我需要为 AsyncTask 设置超时值。我发现当我简单地使用.execute()时,程序运行良好但没有实现超时功能。当我使用.get(1000, TimeUnit.MILLISECONDS) 时,程序会暂停 1 秒,并且不会显示任何进度对话框。
任何人都可以告诉我调用.get(1000, TimeUnit.MILLISECONDS)时是否执行了任务?如果是,为什么没有执行的迹象;如果没有,我该如何实现AsyncTask的这个超时功能?
【问题讨论】:
-
使用
onPostExecute()。如上所述。 -
不要使用
AsyncTask的get(...)方法。它们是完全没有意义的 IMO,因为它们有效地将AsyncTask的异步后台执行转换为同步操作。基本上,它会阻塞主(UI)线程,阻止任何 UI 更新,并使使用AsyncTask的整个想法变得多余。 -
我已经用过onPostExecute()...
标签: android android-asynctask progressdialog