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