如何在不超过ArrayList大小的情况下调用许多异步任务?

时间:2019-01-05 19:21:56

标签: java android performance asynchronous

我正在从事一个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(...)

实际输出:顺序执行

0 个答案:

没有答案