如何为数组列表的每个元素 运行 执行相同的异步任务?
How to run the same asyn task for each element of my array list?
我有一个包含元素的列表,我想使用 AsynkTask.If 中的 RestTemplate 将列表中的每个元素单独发送到本地数据库服务器我指定要发送的元素,我可以发送它很容易和我的 AsyncTask 一起工作,但我想循环所有列表并将所有元素一个一个地发送到我的数据库..我试图在我的 AsyncTask 中做一个 "for loop" 但这行不通,我也试过在 "for loop" 中调用 AsyncTask 并且再次没有任何反应..
这是我使用 RestTemplate
的异步任务
private class SendLigneVente extends AsyncTask<LigneVente, Void, LigneVente>{
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected LigneVente doInBackground(LigneVente... params) {
try {
HttpHeaders requestHeaders = new HttpHeaders();
//solution avec Token
requestHeaders.add("Content-Type","application/json");
requestHeaders.add("Accept", "application/json");
requestHeaders.add("Authorization","Bearer "+AuthToken);
final String url = StaticUrl+"/api/ligne-ventes";
RestTemplate restTemplate=new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
LigneVente lv=new LigneVente();
HttpEntity entity = new HttpEntity(lv, requestHeaders);
ResponseEntity<LigneVente> response = restTemplate.exchange(url, HttpMethod.POST,entity,LigneVente.class);
return response.getBody();
}catch (Exception e) {
Log.e("ScanActivity", e.getMessage(),e);
}
return null;
}
protected void onPostExecute(LigneVente result) {
}
}
这是我在 for 循环中调用我的 AsyncTask 的时候:
public void onClick(View v) {
new CreateVente().execute();
for(int j=0;j<ligneVentes.size();j++){
LigneVente lv=ligneVentes.get(j);
new SendLigneVente().execute(lv);}}
没有任何反应,因为您没有在 onPostExecute
方法中显示任何反馈
protected void onPostExecute(LigneVente result) {
Toast.maketext(getContext(),"Uploaded
",Toast.DURATION_SHORT).show();
}
编辑:您没有使用传递给 AsyncTask 的参数
并在 doInBackground 方法中创建一个新对象
LigneVente lv=params[0];
我有一个包含元素的列表,我想使用 AsynkTask.If 中的 RestTemplate 将列表中的每个元素单独发送到本地数据库服务器我指定要发送的元素,我可以发送它很容易和我的 AsyncTask 一起工作,但我想循环所有列表并将所有元素一个一个地发送到我的数据库..我试图在我的 AsyncTask 中做一个 "for loop" 但这行不通,我也试过在 "for loop" 中调用 AsyncTask 并且再次没有任何反应.. 这是我使用 RestTemplate
的异步任务 private class SendLigneVente extends AsyncTask<LigneVente, Void, LigneVente>{
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected LigneVente doInBackground(LigneVente... params) {
try {
HttpHeaders requestHeaders = new HttpHeaders();
//solution avec Token
requestHeaders.add("Content-Type","application/json");
requestHeaders.add("Accept", "application/json");
requestHeaders.add("Authorization","Bearer "+AuthToken);
final String url = StaticUrl+"/api/ligne-ventes";
RestTemplate restTemplate=new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
LigneVente lv=new LigneVente();
HttpEntity entity = new HttpEntity(lv, requestHeaders);
ResponseEntity<LigneVente> response = restTemplate.exchange(url, HttpMethod.POST,entity,LigneVente.class);
return response.getBody();
}catch (Exception e) {
Log.e("ScanActivity", e.getMessage(),e);
}
return null;
}
protected void onPostExecute(LigneVente result) {
}
}
这是我在 for 循环中调用我的 AsyncTask 的时候:
public void onClick(View v) {
new CreateVente().execute();
for(int j=0;j<ligneVentes.size();j++){
LigneVente lv=ligneVentes.get(j);
new SendLigneVente().execute(lv);}}
没有任何反应,因为您没有在 onPostExecute
方法中显示任何反馈
protected void onPostExecute(LigneVente result) {
Toast.maketext(getContext(),"Uploaded
",Toast.DURATION_SHORT).show();
}
编辑:您没有使用传递给 AsyncTask 的参数
并在 doInBackground 方法中创建一个新对象
LigneVente lv=params[0];