我已经下载和解析与Jsoup网页,显示在列表中的内容。这个过程需要一段时间,所以我实现Callable接口做任务在另一个线程,并得到结果返回。 问题是,过程中需要阻塞UI。可赎回阻塞UI
public class GetListaNotizie implements Callable<ArrayList<Notizia>> {
static ArrayList<Notizia> getNotizieBySezione() {
[...] Long process
return notizie;
}
@Override
public ArrayList<Notizia> call() throws Exception {
return getNotizieBySezione();
}
}
然后:
final ExecutorService service;
final Future<ArrayList<Notizia>> task;
service = Executors.newFixedThreadPool(1);
task = service.submit(new GetListaNotizie());
try {
ArrayList<Notizia> notizie = task.get();
lvListaNotizie.setAdapter(new RiempiLista(activity, notizie));
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
我缺少什么?
'task.get()'调用被阻塞。无论如何,你不需要使用执行者和期货来重新发明轮子。 Android已经有一个['AsyncTask'](http://developer.android.com/reference/android/os/AsyncTask.html)类,它正是为这些类型的任务而准备的。 –