Строка кода в области сопрограммы после невыполнения вызова метода приостановки

#android #kotlin #androidx #kotlin-coroutines #android-paging

#Android #kotlin #androidx #kotlin-сопрограммы #android-подкачка

Вопрос:

После вызова метода suspend внутри блока запуска сопрограммы код после вызова suspend не выполняется.

 lifecycleScope.launch {
            adapter.source!!.submit(page as PagingData<Receipt>)//suspend call
            
            //not executing
            if (setInitialItem) {
                Log.d("INITIALSET", "set initial")
                pager.currentItem = intent.getIntExtra(POSITION, 0)
            }
        }
  

Метод отправки определен в androidx.paging .AsyncPagingDataDiffer

 //snippet
suspend fun submitData(pagingData: PagingData<T>) {
        submitDataId.incrementAndGet()
        differBase.collectFrom(pagingData)
    }
  

Комментарии:

1. Можете ли вы показать эту submit функцию? Что-то мешает его возврату или завершению.

2. Смотрите мое редактирование выше

3. При запуске функции без указания диспетчеров, которые вы бы использовали, выполняется приостановленный метод в основном потоке, пока submitData вызов не завершится, оператор if не будет выполнен. Если вы добавите (Dispaches,IO) к lunch функции, я считаю, что это решит проблему.