Корутина withContext больше не доступна и не читается, перестает работать без причины

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

Эта последняя проблема была решена, но он вызвал другую проблему. Одна из моих сопрограмм для вставки данных раньше работала нормально, а теперь код внутри withContext(Dispatchers.IO) { никогда не читается. Все остальные функции работают, и эта раньше тоже была. Приложение не аварийно завершает работу, нет журнала ошибок, но данные не вставляются, потому что withContext никогда не читается

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

fun insertNewStats(sessionID: Long, fishSpeciesID: Int) {
        uiScope.launch {
            //This access to database is working fine
            val stats = checkDatabaseForStats(sessionID, fishSpeciesID)
            if (stats == null) {
                //This is the call of the function that is not working
                insertStatsToDatabase(sessionID, fishSpeciesID)
            } else {
                stats.numberOfCatch++
                updateStatsToDatabase(stats)
            }
        }
    }

это checkDatabaseForStats, если я поставлю здесь вставку, она будет работать отлично, то есть она исходит не из функции DAO, а из withContext

private suspend fun checkDatabaseForStats(sessionID: Long, fishSpeciesID: Int) : SessionsFishStats?{
    return withContext(Dispatchers.IO) {
        val stats = database.getStat(sessionID, fishSpeciesID)
        stats
    }
}

Часть, которая не работает, достигнута функция, а не withContext

private suspend fun insertStatsToDatabase(sessionID: Long, fishSpeciesID: Int) {
        //This function is reached, the code put there will be read and work
        withContext(Dispatchers.IO) {
            //And from there nothing, this code is never reached
            database.insertStats(
                SessionsFishStats(fk_sessionId = sessionID, fishSpeciesId = fishSpeciesID, numberOfCatch = 1L)
            )
        }
    }

Это запрос в моем DAO

@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertStats(stats: SessionsFishStats)

Если я поставлю withContext непосредственно в insertNewStats (не передавая функцию), это тоже не сработает.

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


Я сделал это, просто поместил все в одну и ту же функцию, и это сработало отлично. Это странно, и я не знаю, почему...

fun whyIsThisWorking(sessionID: Long, fishSpeciesID: Int) {
        uiScope.launch {
            withContext(Dispatchers.IO) {
                val stat = database.getStat(sessionID, fishSpeciesID)
                if (stat == null) {
                    database.insertStat(
                        SessionsFishStats(fk_sessionId = sessionID, fishSpeciesId = fishSpeciesID, numberOfCatch = 1L)
                    )
                } else {
                    stat.numberOfCatch++
                    database.updateStats(stat)
                }
            }
        }
    }

person Lyam.D    schedule 09.07.2019    source источник
comment
Добавьте код checkDatabaseForStats(sessionID, fishSpeciesID).   -  person solaza    schedule 10.07.2019
comment
отредактировано и добавлено, но это довольно просто, не уверен, что это будет очень полезно   -  person Lyam.D    schedule 10.07.2019
comment
О, и database.getStat используется во многих других ситуациях и работает отлично, поэтому я уверен, что это не оттуда.   -  person Lyam.D    schedule 10.07.2019
comment
попробуйте сделать сборку и очистку проекта   -  person coroutineDispatcher    schedule 10.07.2019
comment
Сделано несколько раз, ничего не изменилось, я даже пытался собрать проект без функции DAO, а затем перестроить его с помощью, тоже не сработало. То же самое после перезапуска Android Studio/компьютера   -  person Lyam.D    schedule 10.07.2019
comment
Я внес правку, я нашел решение, но я все еще не понимаю, почему предыдущий способ внезапно перестал работать   -  person Lyam.D    schedule 10.07.2019