Как устранить опасность объекта «Хранилище комнат» object.getInstance (приложение)? - PullRequest
1 голос
/ 02 февраля 2020

Я занимаюсь разработкой приложения с использованием MVVM и dagger2. Я получил комментарий о том, что мой «Хранилище комнат» object.getInstance (app) "является опасным объектом и может привести к тому, что мое приложение войдет в бесконечную рекурсивную l oop. Как я могу это исправить?

Мой 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 App : DaggerApplication() {

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