Резюме: я проверил экземпляр базы данных, который не был нулевым. Тем не менее, база данных не была создана, глядя на Device File Explorer. Моя цель - создать базу данных, включающую таблицы, на которые я хотел бы посмотреть, чтобы убедиться, что она выглядит правильно, прежде чем я go продолжу работать над кодом.
Подробно: следующий код предназначен для создания экземпляра Room .databaseBuilder на основе 'parks_database'.
private lateinit var INSTANCE: ParksDatabase
fun getDatabase(context: Context): ParksDatabase {
synchronized(ParksDatabase::class.java) {
if (!::INSTANCE.isInitialized) {
INSTANCE = Room.databaseBuilder(
context.applicationContext,
ParksDatabase::class.java,
"parks_database"
).fallbackToDestructiveMigration().build()
if(INSTANCE == null)
Timber.d("INSTANCE is NULL")
else
Timber.d("INSTANCE is NOT NULL")
}
}
return INSTANCE
}
На моем экране Logcat показано «INSTANCE is NOT NULL».
Вот код, который я написал для создания базы данных в ViewModel:
private val parksRepository = ParksRepository(getDatabase(application))
Вот код ParksRepository:
class ParksRepository(private val database: ParksDatabase) {
val parks: LiveData<List<DomainPark>> = Transformations.map(database.parksDao.getParksWithAddresses())
{
it.asDomainModel()
}
init {
Timber.d("Injection ParksRepository")
}
suspend fun refreshParks() {
withContext(Dispatchers.IO) {
Timber.d("refreshParks() is called")
val parkList = ParksApi.retrofitService.getParks(ParksApiService.API_KEY)
database.parksDao.insertAll(parkList.asDatabaseModel())
}
}
}
Я исследовал учебные пособия или веб-сайты. Я не уверен, что мне здесь не хватает для создания базы данных. Означает ли значение INSTANCE значения NOT null, что он должен был создать базу данных, даже если я не нахожу ее в Обозревателе файлов устройств (Да, я обновил sh проводник).
Спасибо за потраченное время!