Android 如何消除“危险”;房间储存库“;object.getInstance(应用程序)?

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

我正在使用MVVM和dagger2开发一个应用程序。我收到一条关于我的“Rooms Repository”对象的评论。getInstance(app)“是一个危险的对象,可能会导致我的应用程序进入无限递归循环。我如何修复此问题

我的RoomRepository:

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(此) } }