Почему невозможно выполнить цикл выполнения вызова для получения нескольких ответов внутри моего IntentService с помощью Retrofit?

android retrofit intentservice event-bus android-priority-jobqueue

436 просмотра

1 ответ

Почему невозможно выполнить цикл выполнения вызова для получения нескольких ответов внутри моего 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, я должен это делать? Но я немного сомневаюсь, потому что я не хочу больше использовать сторонние библиотеки. Однако, если это последний сценарий, я, вероятно, просто пойду с этим.

Автор: mangu23 Источник Размещён: 08.11.2019 11:21

Ответы (1)


0 плюса

Неважно, ребята. Это было из-за очень глупой ошибки, которую я сделал.

Я только что изменился:

List<Agenda> agendaList = null;

в

List<Agenda> agendaList = new ArrayList<>();
Автор: mangu23 Размещён: 20.08.2016 02:21
Вопросы из категории :
32x32