VK Android SDK Вложенные запросы выполняются вразнобой

Пытаюсь последовательно получать данные из рекламного кабинета. Вначале все доступные мне рекламные кабинеты:

  VK.execute(adsService.adsGetAccounts(), new VKApiCallback<List<AdsAccount>>() {

                    @Override
                    public void success(List<AdsAccount> adsAccounts) {
                        getClientsIds(adsAccounts);
                    }

                    @Override
                    public void fail(@NonNull Exception e) {
                    }
                });

Затем из всех этих кабинетов достаю аккаунты всех клиентов:

 private void getClientsIds(List<AdsAccount> adsAccounts) {
        for (AdsAccount account :
                adsAccounts) {

            VK.execute(adsService.adsGetClients(account.getAccountId()), new VKApiCallback<List<AdsClient>>() {
                @Override
                public void success(List<AdsClient> adsClients) {
                   getCampaignsIds(account, adsClients);
                }

                @Override
                public void fail(@NonNull Exception e) {
                }
            });
        }
    }

А из них в свою очередь достаю все возможные кампании, при этом вывожу в текстовое поле имя клиента, а потом название всех его кампаний:

private void getCampaignsIds(AdsAccount account, List<AdsClient> adsClients) {
        textView.append(account.getAccountName() + "\n");
        for (AdsClient client :
                adsClients) {
            VK.execute(adsService.adsGetCampaigns(account.getAccountId(), client.getId(), null, null, null), new VKApiCallback<List<AdsCampaign>>() {
                @Override
                public void success(List<AdsCampaign> adsCampaigns) {
                    for (AdsCampaign campaign :
                            adsCampaigns) {
                        textView.append(campaign.getName() + " \n");
                    }
                }

                @Override
                public void fail(@NonNull Exception e) {

                }
            });
        }
    }

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

    Имя клиента 1
      Кампания 1
      Кампания 2
    Имя клиента 2
      Кампания 3
      Кампания 4

не получается.

Выходит что-то скорее такое:

    Имя клиента 1
    Имя клиента 2
    Кампания 1
    Кампания 2 
    Кампания 3
    Кампания 4
    Имя клиента 3
    Кампания 5
    Кампания 6

Можно ли делать запросы как-то пакетно, и так, чтобы сохранялся порядок? Метод для пакетного создания, описанный в документации, у меня не получается найти, возможно его поменяли в новых версиях.

Еще я думал, что может нужно использовать многопоточность, но я с ней еще не очень хорошо разобрался, и с нахрапа реализовать не получилось.


Ответы (0 шт):