观察者方法从未使用过

时间:2018-05-17 21:07:51

标签: android retrofit2 rx-java2

我还在试图找出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方法会被命中,但我从未看到日志消息或点击断点。如果你看到有什么臭的话我会告诉我的,我很感激。谢谢!

1 个答案:

答案 0 :(得分:3)

你正在观察错误的线程。切换AndroidSchedulers,使其位于主线程上。

public static Single<Response<SyncResponse>> getSyncData() {

     Single response = FestApiClient.getInstance().postSyncData()
             .subscribeOn(Schedulers.io())
             .observeOn(AndroidSchedulers.mainThread());
     return response;
}