我有一个现有的Android项目,在其中创建了一个新的Android Library
(离线服务库)(文件/新/新模块/ Android库)。在此库中,我想创建一个会议室数据库。
我遵循https://developer.android.com/training/data-storage/room并为我的数据库创建了Entity(OfflineData)和DAO(OfflineDataDao)设置,但是对于在哪里设置AppDatabase以及如何将其链接到库感到有些困惑。
@Database(entities = arrayOf(OfflineData::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun getOfflineDataDao(): OfflineDataDao
}
val db = Room.databaseBuilder(
applicationContext,
AppDatabase::class.java, "database-name"
).build()
在我的图书馆中,我没有任何扩展Application类的类。我应该创建一个扩展Application类的新类并在其中执行上述步骤。
请提出我应该怎么做才能通过Room数据库设置图书馆设置
这是我的带库的项目结构
DatabaseManager
Singleton类class DatabaseManager private constructor(private val dp: AppDatabase) {
// declare your function ...
companion object {
@Volatile
private var INSTANCE: DatabaseManager? = null
fun getInstance(context: Context): DatabaseManager {
return INSTANCE ?: synchronized(this) {
INSTANCE ?: run {
val db = Room.databaseBuilder(
context,
AppDatabase::class.java, "database-name"
).build()
DatabaseManager(db).also { INSTANCE = it }
}
}
}
}
}
offlineservicelibrary
中实现gradle
并在调用时将上下文传递给它DatabaseManager.getInstance(context).yourMethod()