Android 如何为数组列表的每个元素运行相同的asyn任务?

Android 如何为数组列表的每个元素运行相同的asyn任务?,android,spring,arraylist,resttemplate,asyncresttemplate,Android,Spring,Arraylist,Resttemplate,Asyncresttemplate,我有一个包含元素的列表,我想在AsynkTask中使用RestTemplate将列表中的每个元素单独发送到本地数据库服务器。如果我指定要发送的元素,我可以轻松地发送它并与AsyncTask一起使用,但我想循环所有列表并将所有元素逐个发送到我的数据库。我尝试执行以下操作:在我的AsyncTask中使用“for-loop”,但这不起作用,我还尝试在“for-loop”中调用AsyncTask,但还是没有发生任何事情。。 这是我使用RestTemplate的异步任务 private class

我有一个包含元素的列表,我想在AsynkTask中使用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) {
    }
}
私有类SendLigneVente扩展异步任务{
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的LigneVente doInBackground(LigneVente…参数){
试一试{
HttpHeaders requestHeaders=新的HttpHeaders();
//解决方案avec令牌
add(“内容类型”、“应用程序/json”);
添加(“接受”、“应用程序/json”);
添加(“授权”、“承载人”+AuthToken);
最终字符串url=StaticUrl+“/api/ligne ventes”;
RestTemplate RestTemplate=新RestTemplate();
restemplate.getMessageConverters().add(新映射Jackson2HttpMessageConverter());
restemplate.getMessageConverters().add(新的StringHttpMessageConverter());
lignevent lv=新的lignevent();
HttpEntity=新的HttpEntity(lv、RequestHeader);
ResponseEntity response=restemplate.exchange(url、HttpMethod.POST、entity、lignevent.class);
返回response.getBody();
}捕获(例外e){
Log.e(“ScanActivity”,e.getMessage(),e);
}
返回null;
}
受保护的void onPostExecute(LigneVente结果){
}
}
这就是我在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);}}
public void onClick(视图v){
新建CreateVente().execute();

对于(int j=0;j什么都没有发生,因为在
onPostExecute
方法中没有显示任何反馈

protected void onPostExecute(LigneVente result) {
    Toast.maketext(getContext(),"Uploaded 
    ",Toast.DURATION_SHORT).show();
}
编辑:您没有使用传递给AsyncTask的参数

以及在doInBackground方法中创建新对象

LigneVente lv=params[0];

我知道,实际上我不需要在onPostExecute中显示任何反馈!因为我说过,如果我尝试只发送我在ArrayList中选择的一个元素,我的代码就可以工作!(因此无需在onPostExecute中显示任何内容)我只想循环并发送我列表中的所有元素。技术上,这也应该有效。顺便问一下,你怎么知道请求不起作用?伙计,实际上我用param[0]替换了新对象的创建正如你提到的,它很有效,谢谢你。你遇到了什么问题?android调试中没有错误,当我在for循环中创建asynctask的新实例时,什么都不会发生。但是,当我在arraylist中指定一个元素choosen时,我可以在没有for循环的情况下执行asynctask,它工作得很好