Parse.com从后台查询中获取数据

时间:2018-08-20 20:39:39

标签: java android mvvm parse-platform kotlin

我对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的任何建议?

0 个答案:

没有答案