Java andorid RXJava2 опубликовать в сервисе для Activity и время от времени это то же самое на следующем - PullRequest
0 голосов
/ 21 декабря 2018

На службе я публикую свое событие:

RxBus.getSubject().onNext(eventAddNoteAndRealize) ;

Это мой RxBus:

public final class RxBus {

    private  static final BehaviorSubject<Object> behaviorSubject
            = BehaviorSubject.create();


    public synchronized static BehaviorSubject<Object> getSubject() {
        return behaviorSubject;
    }
}

И в моей деятельности у меня есть это:

DisposableObserver<Object> disposable = RxBus.getSubject().
        subscribeWith(new DisposableObserver<Object>() {


            @Override
            public void onNext(Object o) {
                if (o instanceof EventAddNoteAndRealize) {
                    Toast.makeText(NewMainActivity.this , "next", Toast.LENGTH_LONG).show();
                    EventAddNoteAndRealize event = new EventAddNoteAndRealize(((EventAddNoteAndRealize) o).getNoteAndRealizeDAOList());
                    eventAddNoteAndRealize = event;
                    getRealizeAndNote((EventAddNoteAndRealize)o);
                }
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });

И метод onNext выполняет два раза одни и те же объекты.Я понятия не имею, что я сделал не так

1 Ответ

0 голосов
/ 21 декабря 2018

Вы уверены, что вы не излучаете один и тот же объект 2 раза, потому что, когда я проверяю ваш код, он работает хорошо

    @Override
public void run(String... args) throws Exception {

    DisposableObserver<Object> disposable = RxBus.getSubject().
            subscribeWith(new DisposableObserver<Object>() {


                @Override
                public void onNext(Object o) {
                    System.out.println(o);
                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onComplete() {

                }
            });

    Observable.interval(100, TimeUnit.MILLISECONDS)
            .map(aLong -> {
                RxBus.getSubject().onNext(aLong);
               return aLong;
            }).subscribe();
}

}
 final class RxBus {

private  static final BehaviorSubject<Object> behaviorSubject
        = BehaviorSubject.create();


public synchronized static BehaviorSubject<Object> getSubject() {
    return behaviorSubject;
}

Убедитесь, что вы не излучаете объект, если мой ответ равен 0 1 23 4 5 6.,.

...