Как вызвать много асинхронных задач, не превышая размер ArrayList? - PullRequest
0 голосов
/ 05 января 2019

Я работаю над проектом Android. Одна из задач требует получения определенных значений из ArrayList и выполнения асинхронной функции для каждого значения.

Я придумал способ последовательно выполнять функцию для каждого значения, но это просто отменяет преимущества асинхронной функции.

Чего я хочу добиться, так это параллельно выполнять функцию с различными значениями.

Что я пробовал:

-создание новой переменной счетчика и выполнение тестов на 2 счетчиках, но это просто привело к созданию бесконечного цикла

 private static void convertListCurrencies(final ArrayList<Logs> logsList, final FirestoreCallback<Logs> firestoreCallback){

    if(mConvCount >= logsList.size()){

        firestoreCallback.onCallback(logsList);

    }else{

        final Logs l = logsList.get(mConvCount);

        mConvCount++;

        Currencies.convertAmount(l.getAmount(), l.getCurrID(), NavigationLayout.mUser.getPrefCurrencyID(),
                new FirestoreCallback<Double>() {
                    @Override
                    public void onCallback(ArrayList<Double> list) {
                        l.mAmount = list.get(0);
                        convertListCurrencies(logsList, firestoreCallback);
                    }
                });
    }
}

ожидаемый результат: выполнение нескольких Currencies.convertAmount (...) одновременно

фактический вывод: последовательное выполнение

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