我正在使用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
中运行它。
这种方法是正确的还是我必须考虑其他方法。
答案 0 :(得分:1)
public final Result get ()
Added in API level 3
Waits if necessary for the computation to complete, and then retrieves its result.
Returns
The computed result.
Throws
CancellationException If the computation was cancelled.
ExecutionException If the computation threw an exception.
InterruptedException If the current thread was interrupted while waiting.
调用get()
不会使asynctask asunchronous。 get()
等待阻塞ui线程的结果。删除get()
并使用例如new
TheTask().execute()
之类的执行。
还必须在ui线程上调用asynctask
答案 1 :(得分:1)