【发布时间】:2013-10-10 06:55:08
【问题描述】:
我正在使用asynctask 执行一些任务。
我也想实现在 60 秒内完成,否则会给出超时异常消息。
所以我使用AsyncTask.get(time,timeFormat);
例子:
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
validateConnection.execute().get(60, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (TimeoutException e) {
stopConnTask();
invalidCrediantialsError(Utilities.TIMED_OUT_ERROR);
e.printStackTrace();
}catch(CancellationException e){
e.printStackTrace();
};
}
}).start();
它可以像AsyncTask 一样正常工作。在UI 线程中获取块,所以我在单独的thread 中运行它。
这种方法是否正确,或者我必须考虑其他方法。
【问题讨论】:
-
asynctask 是异步的,除非您调用
get而不是execute,否则它不会阻塞 ui 线程 -
但我同时调用了 validateConnection.execute().get(60, TimeUnit.SECONDS);还是会阻塞
-
删除
get它应该可以正常运行 -
asynctask 也必须在 ui 线程上调用
标签: android multithreading android-asynctask