【发布时间】:2021-05-06 04:49:24
【问题描述】:
我在 for 循环中有一个嵌套的改造服务器请求调用,但出现错误
java.lang.OutOfMemoryError: 无法分配 2359304
我该如何解决这个问题。有没有其他方法可以循环改造服务器调用..
List<ID> idList = new Arraylist<>();
int idCompleted = 0;
idList.size() 大于30000;
这是我的功能:
public void getNewList(){
for(int i=0;i<idList.size();i++) {
int iValue = i;
Call<String> call = RetrofitClient.getInstance().getMyApi().getList(idList.get(i).getId(), "A");
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
String responseA = response.body().toString();
Call<String> call1 = RetrofitClient.getInstance().getMyApi().getList(idList.get(iValue).getId(), "B");
call1.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
String responseB = response.body().toString();
addToFile(responseA,responseB);
idCompleted ++;
if (idCompleted == idList.size()) {
Log.i("Finished : ", "Yes")
}else {
getNewList();
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
idCompleted ++;
if (idCompleted == idList.size()) {
Log.i("Finished : ", "Yes")
}else {
getNewList();
}
}
});
}
@Override
public void onFailure(Call<String> call, Throwable t) {
idCompleted ++;
if (idCompleted == idList.size()) {
Log.i("Finished : ", "Yes")
}else {
getNewList();
}
}
});
}
【问题讨论】: