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