为什么 Room.databaseBuilder 函数需要上下文作为 Room 数据库中的参数?

问题描述 投票:0回答:1
companion object {
        @Volatile
        private lateinit var instance: ExampleDatabase

        fun getInstance(context: Context): ExampleDatabase {
            synchronized(this) {
                if(!::instance.isInitialized) {
                    instance = Room.databaseBuilder(
                        context.applicationContext,  // Why does this require context?
                        LottoDatabase::class.java,
                        "lotto_database"
                    )
                        .fallbackToDestructiveMigration()
                        .build()
                }
                return instance
            }
        }
    }

以上代码是创建房间数据库单例的一般方式。 我想知道为什么 Room.databaseBuilder 函数需要上下文作为参数。我知道这个问题可能很愚蠢,因为我对 Android 中的上下文缺乏了解。

  1. 我应该在该参数中传递什么参数?
  2. 如果我传入 Activity 上下文或应用程序,会有什么不同?
android kotlin android-room android-context android-database
1个回答
0
投票
Android 中的

Room.databaseBuilder() 函数用于创建 Room 数据库的实例。出于以下几个原因,它需要上下文作为参数:

  1. 创建数据库实例。 Room 使用上下文在应用程序的数据库目录中创建数据库实例。
  2. 访问数据库文件。 Room 使用上下文来访问数据库文件,该文件存储在应用程序的内部存储中。
  3. 为其他组件提供对数据库的访问。 Room 使用上下文为应用程序的其他组件(例如 DAO 和 ViewModel 类)提供对数据库的访问。
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.