API如何在android中调用for循环?

How to do API call in for loop in android?

我们如何在对象数组列表的 for 循环中执行相同的 API 调用:

private var emergencyContacts: ArrayList<Contact> = ArrayList()

    emergencyContacts.forEach
    {
        contactsViewModel.deleteEmergencyContactsAPI(it.id, it.id2)
    }

    fun deleteEmergencyContactsAPI(patientID: String, contactId: Int) {
        _deleteEmergencyContactsLiveData.postValue(Resource.loading())
        repository.deleteEmergencyContact(patientID, contactId)
            .subscribeOn(Schedulers.computation())
            .subscribeWith(DeleteEmergencyContactsResponse(_deleteEmergencyContactsLiveData))
    }

    inner class DeleteEmergencyContactsResponse(liveData: MutableLiveData<Resource<Status>>) :
        ResponseSingleObserverWrapper<Status, Status>(
            compositeDisposable,
            liveData
        ) {
        override fun onSuccess(t: Status) {
            _deleteEmergencyContactsLiveData.postValue(Resource.success(t))
        }

        override fun onError(e: Throwable) {
            _deleteEmergencyContactsLiveData.postValue(Resource.error(e.message ?: ""))
        }
    }

我想在API次调用后进行UI次执行,不会影响画面表现。

我已经尝试使用 Zip 运算符,并行网络 API 调用但它不能很好地工作,因为 API 调用计数不是静态的。

任何提示或帮助将不胜感激。谢谢

因此,对于需要时间执行的调用,您 运行 将它们放在单独的线程中。
因此,为此,您使用 Coroutines
现在,如果您想从单独的线程在主线程上执行某些操作,Coroutines 也可以做到。这是一个例子。

CoroutineScope(Dispatchers.IO).launch {
    StuffYouWantOnADifferentThread()
    CoroutineScope(Dispatchers.Main).launch {
        StuffYouWantOnTheMainThread()
    }
}

这里发生的是,IO 协程在后台线程上启动 StuffYouWantOnADifferentThread()。然后,在执行完之后,Main协程在主线程上执行StuffYouWantOnTheMainThread()