Ich schaute mir das Beispiel einer Android-App in MVP (link here) codiert. Aber jetzt möchte ich den gegebenen RxJava1-Code im Tutorial zu einem RxJava2-Code umcodieren. Allerdings habe ich Probleme damit, vor allem unSubscribe()
und isUnSubscribed()
. Ich habe versucht, es zu konvertieren, und ich werde meinen Versuch teilen.Migration von RxJava1 nach RxJava2
RxJava1 Code:
public void doLogin(AuthCredentials credentials) {
cancelSubscription();
subscriber = new Subscriber<Account>() {
@Override public void onCompleted() {
if (isViewAttached()) {
getView().loginSuccessful();
}
}
@Override public void onError(Throwable e) {
if (isViewAttached()) {
getView().showError();
}
}
@Override public void onNext(Account account) {
eventBus.post(new LoginSuccessfulEvent(account));
}
};
// do login
accountManager.doLogin(credentials)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(subscriber);
}
private void cancelSubscription() {
if (subscriber != null && !subscriber.isUnsubscribed()) {
subscriber.unsubscribe();
}
}
Dies ist mein Versuch, auf RxJava2 Code:
public void doLogin(AuthCredentials credentials) {
cancelSubscription();
subscriber = new Subscriber<Account>() {
@Override public void onSubscribe(Subscription s) {
// do login
accountManager.doLogin(credentials)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(subscriber);
}
@Override public void onCompleted() {
if (isViewAttached()) {
getView().loginSuccessful();
}
}
@Override public void onError(Throwable e) {
if (isViewAttached()) {
getView().showError();
}
}
@Override public void onNext(Account account) {
eventBus.post(new LoginSuccessfulEvent(account));
}
};
}
private void cancelSubscription() {
//isUnsubscribed and unsubscribe doesnt work anymore
}
ich ziemlich neu bin auf das Konzept der RxJava. Wenn jemand meine Fehler aufzeigen und mir zeigen kann, dass das großartig wäre. :)
Bitte lesen Sie die [Was anders ist] (https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0) Wiki-Seite. Ihr Fall ist in [this] (https://github.com/ReactiveX/RxJava/wiki/What-different-in--2.0#subscriber) Abschnitt abgedeckt. – akarnokd
Ja, ich weiß. Ich habe das Problem bereits gelöst. Wird die Antwort bald posten. –