使用同步适配器实现RxJava

时间:2016-06-11 07:15:50

标签: android rx-java android-syncadapter rx-android

我尝试使用RxJava通过RxAndroid及其他图书馆RxLifecycle,在从Activity获取一些数据后更新SyncAdapter。我知道当Service呼叫时,如何通过Activity执行网络呼叫。例如:

Observable<String> fetchFromGoogle = Observable.create(new Observable.OnSubscribe<String>() {
    @Override
    public void call(Subscriber<? super String> subscriber) {
        try {
            String data = fetchData("http://www.google.com");
            subscriber.onNext(data); // Emit the contents of the URL
            subscriber.onCompleted(); // Nothing more to emit
        }catch(Exception e){
            subscriber.onError(e); // In case there are network errors
        }
    }
});

fetchFromGoogle
.subscribeOn(Schedulers.newThread()) // Create a new Thread
.observeOn(AndroidSchedulers.mainThread()) // Use the UI thread
.subscribe(new Action1<String>() {
    @Override
    public void call(String s) {
        view.setText(view.getText() + "\n" + s); // Change a View
    }
});

问题在于,当使用SyncAdapter时,SyncManager负责启动Service来获取数据。因此,我不知道如何在一个尚未启动且在UI上观察的线程上创建一个Observable

我正在考虑创建Singleton SubjectActivity可以依据的SyncAdapter,并在Observable创建Singleton时发出的事件是{它完成了(在怀疑Subject TypeError: 'str' object is not callable之后)。

什么是更好/正确的解决方案?

0 个答案:

没有答案