我有一种方法可以对Future进行一些后台工作。我需要知道如何在不阻塞UI线程的情况下获得结果。我必须在哪里进行future.get()
通话?
我试图在while循环中使用方法future.isDone()
,但是正如预期的那样,这也会阻塞UI线程。
这是我的代码:
Future<ArrayList<String>> future = DefaultExecutorSupplier.getInstance().forBackgroundTasks()
.submit(new Callable<ArrayList<String>>() {
@Override
public ArrayList<String> call() {
//DO SOME LONG WORK
return results;
}
});
try {
return future.get();
}
catch (ExecutionException e) {
e.printStackTrace();
}
catch (InterruptedException e) {
e.printStackTrace();
}
此刻,UI仅在future.get()
行中停止,等待其完成。