我正在使用asynctask
來執行某個任務。 我也想實現在60秒內完成,否則給出超時異常消息。AsyncTask TimeOut情況解決方案
所以我現在用的是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是asyncrhonous它不會阻塞ui線程,除非您調用'get'而不是'execute' – Raghunandan
但我同時調用validateConnection.execute()。get(60,TimeUnit.SECONDS);它仍然阻止 – Bora
刪除'get'並且它應該運行良好 – Raghunandan