我还在试图找出RxJava中的观察者。我有一个Retrofit客户端,一个实用程序方法和一个管理数据同步功能的类。当我试图观察我的可观测量时,我没有看到观察者订阅的任何迹象。
我的实用程序方法
public static Single<Response<SyncResponse>> getSyncData() {
Single response = FestApiClient.getInstance().postSyncData()
.observeOn(Schedulers.newThread())
.subscribeOn(AndroidSchedulers.mainThread());
return response;
}
我的retorfit客户
public Single<Response<SyncResponse>> postSyncData() {
Single response = mFestApiClientService.postEventSyncList("my endpoint");
return response;
}
我的数据同步管理器
Disposable syncDisposable = ScheduleUtils.getSyncData().subscribe(syncResponse -> {
if (syncResponse.isSuccessful()){
Log.d(TAG, "Successfully posted events!");
addEventsFromSync(syncResponse.body());
mSyncDialog.dismiss();
} else {
getFailureMessage(syncResponse.body());
Log.d(TAG, "Failed posting events");
}
}, throwable -> {
Log.d(TAG, "Failed posting events");
});
mCompositeDisposable.add(syncDisposable);
我认为syncResponse.onFailure和onSuccess方法会被命中,但我从未看到日志消息或点击断点。如果你看到有什么臭的话我会告诉我的,我很感激。谢谢!
答案 0 :(得分:3)
你正在观察错误的线程。切换AndroidSchedulers,使其位于主线程上。
public static Single<Response<SyncResponse>> getSyncData() {
Single response = FestApiClient.getInstance().postSyncData()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
return response;
}