如何正确实例化Kotlin中的Room数据库? 文档说我应该使用Singleton设计模式
注意:实例化AppDatabase对象时应遵循单例设计模式,因为每个RoomDatabase实例都非常昂贵,并且您几乎不需要访问多个实例。
所以,我想这将是这样
private var INSTANCE: AppDatabase? = null
fun getInstance(context: Context): AppDatabase? {
if (INSTANCE == null){
synchronized(AppDatabase::class){
INSTANCE = Room.databaseBuilder(context.applicationContext,
AppDatabase::class.java, "app_database")
.build()
}
}
return INSTANCE
}
以这种方式创建的问题是getInstance
的返回类型为AppDatabase?
。这意味着我必须一直检查getInstance的可为空性。我想在创建它然后返回时永远不会为null。
P.S。我用相同的措词问了同一question,但没有得到任何答案