Kodein - 注入的数据值不是数据的值检索



在我的CallType类中,我将注入的数据connectivityState.callBackState为true,在我的ConnectivitySte类中初始化为false。但是在我的IncomingCallBroadcastReceiver课上,我的布尔数据callBackState不是true而是false

class CallType {
val kodein = Kodein {
    bind<ConnectivityState>() with provider { ConnectivityState() }
}
private val connectivityState: ConnectivityState = kodein.instance()
fun call(number: String) {
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
connectivityState.callBackState = true
}    

class IncomingCallBroadcastReceiver : KodeinBroadcastReceiver() {
   private val connectivityState: ConnectivityState by instance()
   override fun onBroadcastReceived(context: Context, intent: Intent) {
   
   //!!!!!!!!!!!!!!  IT'S FALSE HERE WHEREAS I PUT IT TO TRUE IN CALLTYPE CLASS
   if (connectivityState.callBackState) {
    }
}    
class ConnectivityState {
   var iaxState = false    
}

问题出在这里:

bind<ConnectivityState>() with provider { ConnectivityState() }

您绑定到provider范围,这意味着每次请求实例时都会返回一个新实例

如果希望每次都返回相同的实例,则需要绑定到singleton

bind<ConnectivityState>() with singleton { ConnectivityState() }

最新更新