Постоянно ли копируется база данных при вызове createFromAssets?

Всем добрый вечер. Подскажите пожалуйста, если я подгружаю БД из ассетов готовую, то она у меня будет каждый раз загружаться от туда при запуске приложения, или после первого запуска она загружается в папку data, и потом подгружается только от туда?

Проблема в том, что если я запускаю приложение, и нажимаю на кнопку, которая запускает инициализацию базы данных, то приложение висит пару секунд, после чего отвисает, и отдает данные. При повторном нажатии кнопки данные загружаются уже быстро.

Обращаюсь к базе данных в IO потоке использую корутины.

Вот мой код..

companion object {
        fun init(context: Context) =
            Room.databaseBuilder(context, EnemiesDatabase::class.java, "EnemiesDatabase")
                .createFromAsset("databases/EnemiesDatabase.db")
                .fallbackToDestructiveMigration()
                .build()
    }

Запрос 1:

fun enemiesFromDb(level: Int, context: Context) {
        MainScope().launch {
            val repository = EnemiesDbRepository(context)
            enemies = repository.getEnemiesListByLevel(level) as MutableList<Enemy>
            notifyDataSetChanged()
        }
    }

Запрос из репозитория:

suspend fun getEnemiesListByLevel(enemyLevel: Int) = withContext(threadIO) {
        val list = database.getEnemiesDao().getEnemiesByLevel(enemyLevel)
        closeDb()
        return@withContext list
    }

Ответы (1 шт):

Автор решения: Solo4

Вопрос решил, бд из ассетов копируется один раз, после чего подгружается из data package. При обновлениях приложения надо настроить миграцию, если БД меняется со временем работы приложения.

→ Ссылка