Skip to content

Commit 265cd6e

Browse files
committed
Replace Observable.create with Observable.fromEmitter
1 parent dc5076c commit 265cd6e

File tree

2 files changed

+15
-24
lines changed

2 files changed

+15
-24
lines changed

app/src/main/java/agency/tango/databindingrxjava/MainActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package agency.tango.databindingrxjava;
22

3+
import android.app.Activity;
34
import android.databinding.DataBindingUtil;
45
import android.databinding.ObservableBoolean;
56
import android.databinding.ObservableField;

app/src/main/java/agency/tango/databindingrxjava/RxUtils.java

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@
44
import android.databinding.ObservableField;
55
import android.support.annotation.NonNull;
66

7+
import rx.AsyncEmitter;
78
import rx.Observable;
8-
import rx.Subscriber;
9-
import rx.functions.Action0;
10-
import rx.subscriptions.Subscriptions;
119

1210
import static android.databinding.Observable.OnPropertyChangedCallback;
1311

@@ -17,29 +15,21 @@ private RxUtils() {
1715
}
1816

1917
public static <T> Observable<T> toObservable(@NonNull final ObservableField<T> observableField) {
20-
return Observable.create(new Observable.OnSubscribe<T>() {
21-
@Override
22-
public void call(final Subscriber<? super T> subscriber) {
23-
subscriber.onNext(observableField.get());
24-
25-
final OnPropertyChangedCallback callback = new OnPropertyChangedCallback() {
26-
@Override
27-
public void onPropertyChanged(android.databinding.Observable dataBindingObservable, int propertyId) {
28-
if (dataBindingObservable == observableField) {
29-
subscriber.onNext(observableField.get());
30-
}
18+
return Observable.fromEmitter(asyncEmitter -> {
19+
20+
final OnPropertyChangedCallback callback = new OnPropertyChangedCallback() {
21+
@Override
22+
public void onPropertyChanged(android.databinding.Observable dataBindingObservable, int propertyId) {
23+
if (dataBindingObservable == observableField) {
24+
asyncEmitter.onNext(observableField.get());
3125
}
32-
};
26+
}
27+
};
3328

34-
observableField.addOnPropertyChangedCallback(callback);
29+
observableField.addOnPropertyChangedCallback(callback);
3530

36-
subscriber.add(Subscriptions.create(new Action0() {
37-
@Override
38-
public void call() {
39-
observableField.removeOnPropertyChangedCallback(callback);
40-
}
41-
}));
42-
}
43-
});
31+
asyncEmitter.setCancellation(() -> observableField.removeOnPropertyChangedCallback(callback));
32+
33+
}, AsyncEmitter.BackpressureMode.LATEST);
4434
}
4535
}

0 commit comments

Comments
 (0)