Я сталкиваюсь с фатальным исключением: java.lang.illegalStateException в моем приложении Android при доступе к базе данных комнаты DAO после того, как пул соединений базы данных был закрыт. < /p>
В моей базе данных I иметь функцию приостановки для очистки базы данных. < /p>
suspend fun formatAndCleanDatabase(context: Context){
clearAllData()
close()
context.deleteDatabase("app_database")
clearDatabaseInstance()
}
< /code>
Когда я очищаю таблицы и закрывающую базу данных, поток Попробуйте получить данные после закрытия, что я хочу, как это предотвратить. < /p>
@Dao
interface UserProfileDao {
@Query("SELECT * FROM user_profile WHERE user_id = :userId")
fun getProfileFlow(userId: String): Flow
}
< /code>
Ошибка происходит после очистки базы данных. И более ранний поток, уже выдвигаемый моделью просмотра, перед очисткой базы данных - это попробовать данные из базы данных с использованием потока в методе DAO после закрытия базы данных и недействительной. Вот след у стека: < /p>
Fatal Exception: java.lang.IllegalStateException
Cannot perform this operation because the connection pool has been closed.
android.database.sqlite.SQLiteConnectionPool.throwIfClosedLocked (SQLiteConnectionPool.java:1078)
androidx.room.driver.SupportSQLiteStatement$SupportAndroidSQLiteStatement.step (SupportSQLiteStatement.android.kt:183)
com.app.database.daos.profile.UserProfileDao_Impl.getProfileFlow$lambda$2 (UserProfileDao_Impl.kt:148)
Подробнее здесь: https://stackoverflow.com/questions/794 ... ction-pool