@Override public synchronized void removeOnPropertyChangedCallback(OnPropertyChangedCallback callback) { super.removeOnPropertyChangedCallback(callback); Disposable subscription = subscriptions.remove(callback); if (subscription != null && !subscription.isDisposed()) { subscription.dispose(); } } }
@Override public void onStop() { super.onStop(); musicService.removeMusicServiceListener(this); getContext().unbindService(this); currentAudio.removeOnPropertyChangedCallback(currentAudioCallback); currentAlbumArt.removeOnPropertyChangedCallback(currentAlbumArtCallback); }
public static <T> Flowable<T> toObservableField(@NonNull final ObservableField<T> observableField) { return Flowable.create(emitter -> { final OnPropertyChangedCallback callback = new OnPropertyChangedCallback() { @Override public void onPropertyChanged(android.databinding.Observable dataBindingObservable, int propertyId) { if (dataBindingObservable == observableField) { emitter.onNext(observableField.get()); } } }; observableField.addOnPropertyChangedCallback(callback); emitter.setCancellable(() -> observableField.removeOnPropertyChangedCallback(callback)); }, BackpressureStrategy.DROP); }
public static <T> Observable<T> toObservable(@NonNull final ObservableField<T> observableField) { return Observable.fromEmitter(asyncEmitter -> { final OnPropertyChangedCallback callback = new OnPropertyChangedCallback() { @Override public void onPropertyChanged(android.databinding.Observable dataBindingObservable, int propertyId) { if (dataBindingObservable == observableField) { asyncEmitter.onNext(observableField.get()); } } }; observableField.addOnPropertyChangedCallback(callback); asyncEmitter.setCancellation(() -> observableField.removeOnPropertyChangedCallback(callback)); }, AsyncEmitter.BackpressureMode.LATEST); } }