我对parse.com来说还很陌生,我想获取需要一段时间才能获取的某些数据,所以我使用的是'findInBackground()'方法,问题是,当数据已成功检索,因此我可以更新活动,但显然不能在findInBackground的回调中完成。
我知道我可以使用'find()'方法在主线程中获取此信息,但这会冻结我的活动,直到查询完成。
Viewmodel:
class DataViewModel{
val dataList = MutableLiveData<ArrayList<Data>>()
DataRepository.getData().subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(object : DisposableObserver<ArrayList<Data>>() {
override fun onComplete() {
}
override fun onNext(dataRetrieved: ArrayList<Data>) {
dataList.value = dataRetrieved
}
override fun onError(e: Throwable) {
Log.e(TAG, "loadData", e)
}
})
}
存储库:
class DataRepository {
fun getData(): Observable<ArrayList<Data>> {
val dataList = ArrayList<Data>()
ParseQuery.getQuery < ParseObject("data").findInBackground { retrievedDataList, exception ->
{
dataList = retrievedDataList //I wanted to return the list in this callback but 'return is not allowed here'
}
return Observable.just(dataList) //Not working as the list is being filled in background
}
}
}
在findInBackground的回调准备就绪时如何通知我的ViewModel的任何建议?