我有房间TypeConverter
我需要将参数注入到它的构造函数中
class RoomConverters(moshi Moshi) {
@TypeConverter
fun fromUserActionLog(data: UserActionLogModel): String {
return moshi.adapter(UserActionLogModel::class.java).toJson(data)
}
@TypeConverter
fun toUserActionLog(json: String): UserActionLogModel {
return moshi.adapter(UserActionLogModel::class.java).fromJson(json)}
}
}
但是当我无法注释时TypeConverter
使用构造函数到数据库对象;
@Database(entities = [SsidModel::class], version = 1, exportSchema = false)
@TypeConverters(RoomConverters::class)
abstract class AppDatabase : RoomDatabase() {
abstract fun ssidDao(): SsidDao
}
有什么办法可以实现这一点吗?
您可以使用版本中的构造函数参数创建 Room TypeConverter2.3.0-alpha03
发行说明:
Room 现在具有用于提供类型转换器实例的 API,以便
应用程序可以控制它们的初始化。标记类型转换器
将提供给 Room 使用新注释
@ProvidedTypeConverter
https://developer.android.com/jetpack/androidx/releases/room#2.3.0-alpha03 https://developer.android.com/jetpack/androidx/releases/room#2.3.0-alpha03
在您的情况下,您应该将 @ProvidedTypeConverter 添加到 RoomConverter
@ProvidedTypeConverter
class RoomConverters(moshi: Moshi)
在数据库创建时创建转换器并将其传递给数据库构建器:
val roomConverter = RoomConverters(Moshi())
val db = Room.databaseBuilder()
.addTypeConverter(roomConverter)
.build()
您也可以使用 DI 框架,例如匕首2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)