大佬教程收集整理的这篇文章主要介绍了在 appmodule 中获取 Room 数据库参考,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序,我需要在创建它时预先填充我的数据库,我使用 dagger hilt 注入并提供依赖项(room daos),当我尝试插入数据时,它要求提供电影数据库,但不要不知道如何在 appmodule 中获取其引用,提前感谢您的帮助。
// this is my database
@Database(entitIEs = [DataModel::class,MovIEResultItem::class],version = 1,exportscheR_179_11845@a = falsE)
abstract class MovIEsDatabase : RoomDatabase() {
abstract fun popularDao() : PopularMovIEsDao
}
@Singleton
@ProvIDes
fun provIDePopularMovIEsDao(movIEsDatabase: MovIEsDatabasE) : PopularMovIEsDao {
return movIEsDatabase.popularDao()
}
@Singleton
@ProvIDes
fun provIDeDatabase(@ApplicationContext context: Context): MovIEsDatabase {
return Room.databaseBuilder(context.applicationContext,MovIEsDatabase::class.java,"movIE.db")
.addCallBACk(object : RoomDatabase.CallBACk(){
overrIDe fun onCreate(db: SupportsqliteDatabasE) {
super.onCreate(db)
// here it asks for database instance,not sure how to get it
provIDePopularMovIEsDao().insertPopularMovIEs(getMovIEResultItem())
}
})
.fallBACkToDestructiveMigration()
.build()
}
@Database(entities = [DataModel::class,MovieResultItem::class],version = 1,exportscheR_179_11845@a = falsE)
abstract class MoviesDatabase : RoomDatabase() {
abstract fun popularDao(): PopularMoviesDao
@Volatile
private var INSTANCE: MoviesDatabase? = null
@Singleton
@Provides
fun provideDatabase(@ApplicationContext context: Context): MoviesDatabase {
return INSTANCE ?: synchronized(this) {
val databaseInstance = Room.databaseBuilder(
context.applicationContext,MoviesDatabase::class.java,"movie.db"
)
.fallBACkToDestructiveMigration()
.addCallBACk(InsertDatabaseCallBACk())
.build()
INSTANCE = databaseInstance
return instance
private class InsertDatabaseCallBACk() :roomDatabase.CallBACk() {
override fun onOpen(db: SupportsqliteDatabasE) {
super.onOpen(db)
INSTANCE?.let {
it.providePopularMoviesDao().insertPopularMovies(getMovieResultItem())
}
}
}
}
}
}
请您在类 @H_277_9@moviesDatabase 中使用上述代码。
INSTANCE
变量,它被标记为 Volatile
。provideDatabase
函数,以便将数据库实例存储在变量 INSTANCE
中INSTANCE
。InsertDatabaseCallBACk
类。在这里您可以使用数据库 INSTANCE 来执行您的操作 providePopularMoviesDao().insertPopularMovies(getMovieResultItem())
注意:代码可能会显示语法错误或大括号错误,具体取决于您的设置和导入。不要担心,请稍作更改或添加大括号(如果需要),它应该可以正常工作。
以上是大佬教程为你收集整理的在 appmodule 中获取 Room 数据库参考全部内容,希望文章能够帮你解决在 appmodule 中获取 Room 数据库参考所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。