Вложенные асинхронные запросы к vk api.

Ответить
Stormer
Сообщения: 39
Зарегистрирован: 13 сен 2013, 20:18

Вложенные асинхронные запросы к vk api.

Сообщение Stormer » 12 янв 2017, 00:38

Всем добрый день! У меня есть приложение: я логинюсь с помощью vk sdk. Получаю список друзей с фотками+именами_фамилиями. Проблема в том, что почему-то этот список друзей иногда не прогружается (остается белый экран), а также, по-моему, он грузится дольше, чем в официальном приложении.

Как я делаю (упрощенный псевдокод):

Код: Выделить всё

Запрос_к_api_чтобы_получить_список_id_моих_друзей (new Listener() {
...
@Override
public void onComplete() {

Запрос_к_api_чтобы_получить_фотки+имена_и_фамилии_друзей (new Listener() {
...
@Override
public void onComplete() {
//инициилизирую адаптер, с помощью которого и вывожу на экран мой список
}
Т.е. в onComplete вставляю еще один onComplete.

Вопросы такие: является ли мой подход вообще правильным? Вроде с vk api другое как-то не особо приходит в голову. Единственное что: при обращении к api я использую BatchRequest - это формально правильно (потому что я получаю инфу для большого кол-ва друзей
....). Но заметил по логам, что скорость этого Batchrequest-a весьма мала.

Пару лет назад она измерялась десятками запросов в секунду. А теперь за секунду несколько штук всего пролетает. И я думаю, как это можно ускорить. Как в официальном приложении.

Можно, конечно, по-извращенски отсылать одиночные запросы с периодом, скажем 3 мс. Но это опять ничего не гарантирует.

Так как когда-то я вообще отсылал одиночные запросы к vk api без таймаута (со скоростью работы dvm). Потом в один прекрасный день моё приложение начало вылетать. Я заманался искать, в чем дело. И после 10 ч поисков решил поставить таймаут на очередное обращение. И сработало.

Но после такой плюхи я теперь не уверен в том, что моё приложение не полетит, если я буду такую отсебятину гнать.

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

Ответить