代码之家  ›  专栏  ›  技术社区  ›  Rajat Beck

关闭后Koin重新注入实例

  •  0
  • Rajat Beck  · 技术社区  · 6 年前

    我是Koin的新手,我正在创建一个object实例,并给它一个id为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")
    

    但是在我关闭会话之后,它无法在下次访问时创建新实例。

    0 回复  |  直到 6 年前