在我的应用程序中,我需要从 2 个不同的 url 下载一些数据,然后填充一个列表。为此,我创建了一个 2 AsyncTask 类。第一个类负责从对应的url下载数据。另一个负责执行前面提到的 asyncTasks,然后在 UI 线程上填充一个列表。我需要下载数据的任务并行运行,所以我在执行器上执行它们。我的问题是负责填充列表的任务在其他两个任务下载数据之前终止。我怎样才能让那个线程等待其他两个返回。我应该在其他人身上使用 .get,因为我需要它们并行运行。为了清楚起见,我还发布了一些代码。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
readJsonTask task = new readJsonTask(this);
task.execute();
}
private class readJsonTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... args) {
downloadUrl task = new downloadUrl(url1,"jsonData1","/sdcard/appData/LocalJson/jsonData1");
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
downloadUrl task1 = new downloadUrl(url2,"jsonData2","/sdcard/appData/LocalJson/jsonData2");
task1.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
return "done";
}
@Override
protected void onPostExecute(String result) {
//update UI
}
}
private class downloadUrl extends AsyncTask<String, Void, String> {
private String url;
private String targetFolder;
private String pathForLoad;
@Override
protected String doInBackground(String... args) {
//download Data
return "done";
}
@Override
protected void onPostExecute(String result) {
}
}