Android 如何消除“危险”;房间储存库“;object.getInstance(应用程序)?
我正在使用MVVM和dagger2开发一个应用程序。我收到一条关于我的“Rooms Repository”对象的评论。getInstance(app)“是一个危险的对象,可能会导致我的应用程序进入无限递归循环。我如何修复此问题 我的RoomRepository:Android 如何消除“危险”;房间储存库“;object.getInstance(应用程序)?,android,android-studio,android-room,dagger-2,android-mvvm,Android,Android Studio,Android Room,Dagger 2,Android Mvvm,我正在使用MVVM和dagger2开发一个应用程序。我收到一条关于我的“Rooms Repository”对象的评论。getInstance(app)“是一个危险的对象,可能会导致我的应用程序进入无限递归循环。我如何修复此问题 我的RoomRepository: class RoomRepository @Inject constructor(app: App, private val apiRepository: ApiRepository) { var contactDao: Co
class RoomRepository @Inject constructor(app: App, private val apiRepository: ApiRepository) {
var contactDao: ContactDao
private var allContacts: LiveData<List<ContactsRoom>>
companion object {
@Volatile
private var INSTANCE: RoomRepository? = null
fun getInstance(app: App): RoomRepository {
return INSTANCE ?: getInstance(app)
}
}
init {
val database: ContactDatabase? = ContactDatabase.getInstance(app.applicationContext)
contactDao = database!!.contactDao()
allContacts = contactDao.getAllContact()
}
fun insert(contactsRoom: ContactsRoom) {
AsyncTask.execute{
contactDao.insert(contactsRoom) }
}
}
class-RoomRepository@Inject构造函数(app:app,private-val-apirository:apirository){
var contactDao:contactDao
私有变量allContacts:LiveData
伴星{
@易变的
私有变量实例:RoomRepository?=null
趣味getInstance(app:app):RoomRepository{
返回实例?:getInstance(应用程序)
}
}
初始化{
val数据库:ContactDatabase?=ContactDatabase.getInstance(app.applicationContext)
contactDao=数据库!!.contactDao()
allContacts=contactDao.getAllContact()
}
趣味插页(contactsRoom:contactsRoom){
AsyncTask.execute{
contactDao.insert(contactsRoom)}
}
}
我的应用程序模块
class App : DaggerApplication() {
override fun applicationInjector(): AndroidInjector<out DaggerApplication>? {
return DaggerApplicationComponent.factory().create(this)
}
}
类应用程序:DaggerApplication(){
覆盖有趣的applicationInjector():AndroidInjector{
返回DaggerApplicationComponent.factory().create(此)
}
}