Android 我一直收到一个空值,尽管给它赋值
我想将API响应分配给Kotlin中的全局数组列表,但在HandlerResponse函数之外,arraylist仍然为null var一次性:一次性?=无效的 lateinit var mMap:GoogleMap var sensorsData=ArrayList()Android 我一直收到一个空值,尽管给它赋值,android,google-maps,kotlin,retrofit2,rx-java2,Android,Google Maps,Kotlin,Retrofit2,Rx Java2,我想将API响应分配给Kotlin中的全局数组列表,但在HandlerResponse函数之外,arraylist仍然为null var一次性:一次性?=无效的 lateinit var mMap:GoogleMap var sensorsData=ArrayList() 问题在于showReading和mapFragment.getmapsync是两个异步调用,因此无法保证哪一个将首先完成。处理这一问题的最快方法是同时启动它们,等待它们完成,然后采取行动 如果要使用反应流范例,可以执行以下操作
问题在于
showReading
和mapFragment.getmapsync
是两个异步调用,因此无法保证哪一个将首先完成。处理这一问题的最快方法是同时启动它们,等待它们完成,然后采取行动
如果要使用反应流范例,可以执行以下操作:
Single.create<GoogleMap> { emitter ->
map.getMapAsync { emitter.onSuccess(it) }
}.zipWith(sensorData(token), BiFunction<GoogleMap, SensorNode, Unit> { map, node ->
//do what you want with map and sensordata
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::handleResponse)
Single.create{emitter->
map.getMapAsync{emitter.onSuccess(it)}
}.zipWith(传感器数据(令牌),双功能{map,节点->
//使用地图和传感器数据执行所需操作
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.订阅(此::HandlerResponse)
问题在于showReading
和mapFragment.getmapsync
是两个异步调用,因此无法保证哪一个将首先完成。处理这一问题的最快方法是同时启动它们,等待它们完成,然后采取行动
如果要使用反应流范例,可以执行以下操作:
Single.create<GoogleMap> { emitter ->
map.getMapAsync { emitter.onSuccess(it) }
}.zipWith(sensorData(token), BiFunction<GoogleMap, SensorNode, Unit> { map, node ->
//do what you want with map and sensordata
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::handleResponse)
Single.create{emitter->
map.getMapAsync{emitter.onSuccess(it)}
}.zipWith(传感器数据(令牌),双功能{map,节点->
//使用地图和传感器数据执行所需操作
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.订阅(此::HandlerResponse)
您何时调用HandlerResponse方法?可能在onMapReady之前在数组中插入项之前先执行了onMapReady,您何时调用HandlerResponse方法?可能在onMapReady之前在数组中插入项之前先执行onMapReady