使用 RxJava 的 Android Retrofit:调用只转到 onSubscribe,而不是 onNext

时间:2021-06-27 09:48:31

标签: java android singleton retrofit synchronized

我尝试使用如标题所说的那样,使用 RxJava 进行改造。我使用 Observable 以同步方式处理。但是,如果我记录我的代码,它只会打印 onSubscribe 方法,而不是其他任何内容。但重要的部分是 onNext 和 onComplete。

<块引用>
TransferModel<List<String>> parseModel = new TransferModel(requestModel);
UserRetrofitService userRetrofitService = GlobalRetrofit.getInstance().getRetrofit().create(UserRetrofitService.class);
userRetrofitService.parseMoimingUserFromKakao(parseModel)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Observer<TransferModel<List<String>>>() {
            @Override
            public void onSubscribe(@NonNull Disposable d) {

                Log.w("KAKAO_FRIEND", "1");
            }

            @Override
            public void onNext(@NonNull TransferModel<List<String>> response) {

                Log.w("KAKAO_FRIEND", response.toString());


            }

            @Override
            public void onError(@NonNull Throwable e) {

                Log.e("KAKAO_FRIEND", e.getMessage());

            }

            @Override
            public void onComplete() {

               
                Log.w("KAKAO_FRIEND", "DONE: " + moimingUserFriends.toString());

            }
        });

我认为问题与我使用它的方式有关。上面的调用来自我尝试使用的单例对象。这是解释。 上面的类如下:

<块引用>

公开课 KakaoMoimingFriends {

private static KakaoMoimingFriends INSTANCE = new KakaoMoimingFriends();

private List<Friend> **importantList**;

private LocalDateTime createdTime; // 모이밍 유저 생성 시간을 방지하기 위해 업데이트를 위해서.

]
public KakaoMoimingFriends() {

    this.createdTime = LocalDateTime.now();

}


public void parseUser() {

    /**

    where the above Retrofit is called.

    **/
}

这个类在外部片段中同样被调用:

片段::

<块引用>
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    initView(view);
    initParams();
    initRecyclerView();

    return view;

}

private void initParams() {


    **KakaoMoimingFriends.getInstance().parseUser();**

    **importantListOutside** = **KakaoMoimingFriends.getInstance().getImportantList();**

    Log.w(creationActivity.SESSION_CREATION_TAG, "onActivity");

}

由于Observable部分只经过onSubscribe,所以无法定义importantList,在外部fragment中使用时会报错,因为它是“null”。

我认为我的代码混淆了,因为我笨拙地使用了 Singleton。如果有人可以帮助我,我将不胜感激。我被困在这里两天了..

0 个答案:

没有答案