У меня проблема со студией android и библиотекой для модернизации, а также с тем, как она обрабатывает данные.
У меня есть простая последовательность операций, которую я хотел бы: 1005 * Запрос одного элемента из базы данных на сервере (запрос на выборку)
Дождитесь обратного вызова, чтобы подтвердить, что он был получен приложением Добавить еще один запрос (L oop) Прекратить добавление запросов, когда все данные отправлены
У меня проблема заключается в том, что мой обратный вызов onResponse для моего результата выборки не запускается, пока не будут отправлены все мои запросы. Тогда все ответы - ошибки. (Если я вызываю один элемент (1 из базы данных)), обратный вызов выполняется нормально.
Как заставить его отправить один запрос и дождаться этого ответа перед отправкой другого?
L oop код
private void Pull_data_loop(int total_entries){
//int current_data_point = 0;
boolean datum_processing = false;
for (int i = 1; i <= total_entries; i++) {
Add_single_datam(i);//Call until all entries are fetched from the server
}
}
Код получения - Не запущенный обратный вызов, необходимо дождаться этого обратного вызова перед отправкой следующего запроса
private void Add_single_datam(int id)
{
HashMap<String, String> map = new HashMap<>();
map.put("Id_request", Integer.toString(id));//The ID value
Call<Fetch_result> call = retrofitInterface.executeGet_data(map);//Run the post
call.enqueue(new Callback<Fetch_result>() {
@Override
public void onResponse(Call<Fetch_result> call, Response<Fetch_result> response) {
if (response.code() == 200)//Successful login
{
D1= response.body().getD1_String();
D2= response.body().getD2_String();
boolean result = BLE_DB.addData_Downloaded(D1, D2);//Add data
if (result == true) {
Log.d(TAG, "data_changes: Added data correctly");
}
if (result == false) {
Log.d(TAG, "data_changes: did not add data correctly");
}//false
} else if (response.code() == 404) {
Utils.toast(getApplicationContext(), "Get data fail");//Pass information to the display
}
}
@Override
public void onFailure(Call<Fetch_result> call, Throwable t) {
Utils.toast(getApplicationContext(), "Get data error");
}
});
}
Примечание:
Я использую сервер node js для своих запросов. Я отправляю идентификатор, и он возвращает этот идентификатор в базе данных.