我有一個事件回調方法如何將事件放入ReactiveX Observable?
public void onSomethingHappened(Information info) {
其通過一些常規事件發行者調用。
現在我希望將其包含到ReactiveX observable中。
如何做到這一點?
UPDATE
我發現PublishSubject<T>
類,並用這種以下列方式從Android API包LocationListener
:
public class LocationPublisher implements LocationListener {
@Override
public void onLocationChanged(Location location) {
LocationPublisher.onNext(location);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
StatusPublisher.onNext(new BundleEx(provider, status, extras));
}
@Override
public void onProviderEnabled(String provider) {
EnablenessPublisher.onNext(new Enableness(provider, true));
}
@Override
public void onProviderDisabled(String provider) {
EnablenessPublisher.onNext(new Enableness(provider, false));
}
public final PublishSubject<Location> LocationPublisher = PublishSubject.create();
public final PublishSubject<BundleEx> StatusPublisher = PublishSubject.create();
public final PublishSubject<Enableness> EnablenessPublisher = PublishSubject.create();
public static class Enableness {
private final String provider;
private final boolean enabled;
public Enableness(String provider, boolean enabled) {
this.provider = provider;
this.enabled = enabled;
}
public String getProvider() {
return provider;
}
public boolean isEnabled() {
return enabled;
}
}
public static class BundleEx {
private final String provider;
private final int status;
private final Bundle extras;
public BundleEx(String provider, int status, Bundle extras) {
this.provider = provider;
this.status = status;
this.extras = extras;
}
public String getProvider() {
return provider;
}
public int getStatus() {
return status;
}
public Bundle getExtras() {
return extras;
}
}
}
這是正確的做法?現在我可以訂閱LocationPublisher
,StatusPublisher
和EnablenessPublisher
我嗎?
您基本上可以訂閱任何實現Observable的對象...所以是的,您可以訂閱LocationPublisher中的所有PublishSubjects對象。如果這是一個好方法?這很難說...對我來說很好。 –
問題是任何人都可以將價值推向暴露的主題,而RxJava顯然沒有r/o主題的概念。 – Dims
什麼是r/o主題? –