我已經下載和解析與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)類,它正是爲這些類型的任務而準備的。 –