我尝试使用如标题所说的那样,使用 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。如果有人可以帮助我,我将不胜感激。我被困在这里两天了..