作为内容发送什么

What to send as Content

在我的应用程序中,我使用 Room 库将数据保存到 Firebase 和本地存储。使用 Firebase,一切对我来说都很清楚。但是对于 Rom,我有疑问。我不知道要传递给 class 参数的内容。

PacketsLocalDataSource.kt

class PacketsLocalDataSource(val context: Context) {
    lateinit var db: PacketsDatabase
    lateinit var dao: PacketDao

    fun saveLocal(packet: Packet) {
        db = PacketsDatabase.getInstance(context)
        dao = db.packetDao()
        dao.add(packet)
    }
}

此外,在下面的代码中,我想保存数据。但是在代码的第五行有一个错误:No value passed for parameter 'context'。请让我知道我需要发送什么。

class PocketScoutContainer {
    private val firebaseRealtimeDatabase = Firebase.database

    private val packetsRemoteDataSource = PacketsRemoteDataSource(firebaseRealtimeDatabase)
    private val packetsLocalDataSource = PacketsLocalDataSource()

    val packetsRepository = PacketsRepository(packetsRemoteDataSource, packetsLocalDataSource)
}

您需要将 Context 传递给 PacketsLocalDataSource 构造函数。反过来,在创建 class PocketScoutContainer 的实例时必须传递上下文。所以:

class PocketScoutContainer(context: Context) {
    //...
    private val packetsLocalDataSource = PacketsLocalDataSource(context)
    //...

并且在某些 Activity 中创建 PocketScoutContainer 实例时:

val pocketScoutContainer = PocketScoutContainer(this.applicationContext)

如果 PocketScoutContainer 在 activity 或片段之外的某处实例化,您将需要在那里传递上下文。

这可能会有进一步的帮助:Dependency Injection