Ich habe eine Klasse ViewModel
, die einen PublishSubject
Binder freilegt.PublishSubject-Abonnent empfängt keine Ereignisse
Ansichtsmodell
public class ViewModel {
private PublishSubject<ActionsEvent> binder = PublishSubject.create();
private Service service = createService();
@Override
public Observable<ActionsEvent> getBinder() {
return binder.doOnSubscribe(initialize());
}
private Action0 initialize() {
return new Action0() {
@Override
public void call() {
service.getActions().subscribe(new Action1<Action>() {
@Override
public void call(Action action) {
Log.d(TAG, "So far, so good");
binder.onNext(new ActionFetchedEvent(action));
}
});
}
};
}
}
Und in der Aktivität, eine Aktion abonnieren ausgeführt werden, wenn jedes Ereignis abgerufen wird.
Aktivität
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstance) {
//More code
viewModel.getBinder().subscribe(new Action1<ActionsEvent>() {
@Override
public void call(ActionsEvent event) {
Log.d(TAG, "This is not printed!!");
paintActionInUserInterface(event.getAction());
}
});
}
}
Dienst
public interface ActionsService {
@GET("/actions")
Observable<Action> getActions(); //Performs an HTTP request with Retrofit
}
ActionFetchedEvent
public class ActionFetchedEvent implements ActionsEvent {
private Action action;
//getters and setters
}
Aber Teilnehmer doesn‘ Ich empfange die Veranstaltung. Warum?
Warum brauchen Sie überhaupt ein Thema? Sie können einfach die von Ihrem Dienst zurückgegebene "Beobachtbare" abonnieren. –