如何正确实例化Room Database?

时间:2018-11-19 09:27:05

标签: kotlin singleton

如何正确实例化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,但没有得到任何答案

0 个答案:

没有答案