Коин повторно вводит экземпляр после закрытия - PullRequest
0 голосов
/ 24 декабря 2018

Я новичок в Koin, я создаю экземпляр объекта и задаю ему область действия с идентификатором SESSION, поэтому после того, как я его закрываю.я хочу, чтобы новый экземпляр для него был создан при следующем обращении к нему.

val InkModule = module {
   scope("SESSION") { providesInkDevice(get(), get()) }
    }

fun providesInkDevice(application: Application, preferences: PreferenceUtility): InkDevice {
    return InkDeviceFactory.createClient(application, Gson().fromJson(preferences.deviceInfo, InkDeviceInfo::class.java)) }

Так что теперь, когда я внедряю экземпляр, я всегда создаю область действия

  private val inkDevice: InkDevice by inject()//Lazy injection 

 try {
            scope = getKoin().getScope("SESSION")
        } catch (e: NoScopeFoundException) {
            scope = getKoin().createScope("SESSION")
            Timber.e(e, "Cannot create new scope")
        } 

        inkDevice.connect()//here a new instance is created when we access it first time

Теперь, когдачерез некоторое время я хочу воссоздать новый экземпляр моего объекта (inkDevice), поэтому я решил сделать scope.close

scope = getKoin().getScope("SESSION")
            inkDevice.dispose()
            preferenceUtility.deviceInfo = ""

            scope = getKoin().createScope("SESSION")

, но после закрытия сеанса он не может создать новый экземплярв следующий раз я получу к нему доступ.

...