1

I'm developing an app using MVVM and dagger2. I got a comment about my "Rooms Repository" object.getInstance (app)" is a dangerous object and can cause my app will enter to infinite recursive loop. How can I fix this?

My 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) }
    }
}

My App Module

class App : DaggerApplication() {

    override fun applicationInjector(): AndroidInjector<out DaggerApplication>? {
        return DaggerApplicationComponent.factory().create(this)
    }
}
Infernal
  • 202
  • 3
  • 13

0 Answers0