Почему невозможно выполнить цикл выполнения вызова, чтобы получить несколько ответов внутри моего IntentService через Retrofit?
Почему невозможно выполнить цикл выполнения вызова, чтобы получить несколько ответов внутри моего IntentService через Retrofit?
Пожалуйста, смотрите мой код:
public class UpdateAgendaService extends IntentService {
public static final int STATUS_RUNNING = 0;
public static final int STATUS_FINISHED = 1;
public static final int STATUS_ERROR = 2;
private Agenda agenda;
public UpdateAgendaService() {
super(UpdateAgendaService.class.getName());
}
@Override
protected void onHandleIntent(Intent intent) {
final ResultReceiver receiver = intent.getParcelableExtra("receiver");
String[] dateWeek = intent.getStringArrayExtra("dateWeek");
if (dateWeek != null) {
receiver.send(STATUS_RUNNING, Bundle.EMPTY);
Bundle bundle = new Bundle();
try {
//Why is this not possible?
List<Agenda> agendaList = getAgendaList(dateWeek);
receiver.send(STATUS_FINISHED, bundle);
}
} catch (Exception e) {
/* Sending error message back to activity */
bundle.putString(Intent.EXTRA_TEXT, e.toString());
receiver.send(STATUS_ERROR, bundle);
}
}
Log.d(Utilities.TAG, "Service Stopping!");
this.stopSelf();
}
private List<Agenda> getAgendaList(String[] upcomingWeekdates){
List<Agenda> agendaList = null;
for (int i = 0; i < upcomingWeekdates.length; i++) {
String weekDay = upcomingWeekdates[i];
agendaList.add(getAgenda(weekDay));
}
return agendaList;
}
private Agenda getAgenda(String date) {
Agenda agenda = null;
ApiService apiService = new QardioApi().getApiService();
Call<Agenda> call = apiService.getAgenda(date);
try {
agenda = call.execute().body();
} catch (IOException e) {
e.printStackTrace();
}
return agenda;
}
}
Таким образом, ситуация в том, что у меня есть API, который имеет URL: http//:myapi.com/[date]
который при вызове через модификацию дает мне JSON-ответ Повестки дня (События) на этот конкретный день. То, что я хочу сделать, - это показать повестку дня (события) на предстоящую неделю, поэтому я сделал это с помощью цикла, учитывая массив дат String на предстоящую неделю. Представьте себе что-то вроде приложения Eventbrite.
Что я делаю не так? Я где-то читал, что я должен сделать это через JobQueue/Eventbus, я должен это делать? Но я немного колеблюсь, потому что я не хочу больше использовать сторонние библиотеки. Однако, если это последний сценарий, я, вероятно, просто пойду с этим.
1 ответ
Неважно, ребята. Это было из-за очень глупой ошибки, которую я сделал.
Я только что изменился:
List<Agenda> agendaList = null;
в
List<Agenda> agendaList = new ArrayList<>();