Как правильно инициализировать базу данных в корутине?
Есть база данных, которую мне нужно инициализировать и сразу закрыть. Я решил это делать в LaunchActivity, которая будет выводить на экран лого приложения + прогресс бар. Инициализирую через корутину, но будет ли это корректно работать и будет ли ожидание завершения работы с базой данных, прежде чем стартанет мэйн активити?
Launch activity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModelProvider.get(LaunchActivityViewModel::class.java)
.launchDatabaseOneTime(applicationContext)
startMainActivity()
}
ViewModel
fun launchDatabaseOneTime(context: Context) {
EnemiesDbRepository(context).apply {
initDatabaseInLaunchActivity()
}
}
Repository
fun initDatabaseInLaunchActivity() {
CoroutineScope(Dispatchers.Main + job).launch {
withContext(Dispatchers.IO) {
database = EnemiesDatabase.initSecond(context)
closeDb()
}
job.join()
}
}
Не уверен, что правильно с джойнами работаю. Хотелось бы не блокировать главный поток при загрузке, что бы корректно работал програсс бар.