2015-03-03 1 views
1

Хотя я думаю, что у меня есть ручка об основах использования RxJava, у меня возникают проблемы с использованием шаблона Observer.Асинхронно публиковать для наблюдаемых/Subject

В принципе, я хочу, чтобы у меня были статические объекты List, которые я могу контролировать, и использовать дополнения к списку для отправки этих данных в веб-сервис.

Мой подход до сих пор должен был создать static List<Object> и static Observable<Object>. Это наблюдаемый создаются только делает

observable = Observable.from(listOfObjects); 

Тогда у меня есть логика загрузки внутри .subscribe() вызова. Это сработало бы, если бы у меня был List, который был установлен заранее, но я хочу заполнить его здесь и там во время выполнения. Это все равно будет работать, если я снова позвоню .subscribe(), но мне кажется, что я делаю что-то неправильно, делая это. Я думал, что могу получить существующую подписку, чтобы просто действовать на любые новые элементы, выпущенные из наблюдаемого, но ничего не происходит, когда я добавляю в список.

Любое понимание лучшего/правильного подхода приветствуется.

+0

Мне очень любопытно ответить на этот вопрос, я бы тоже его использовал. Я думаю, что у RxJava нет никакого решения как такового, мы хотим, в основном, что-то вроде http://stackoverflow.com/questions/7260746 или http://twistedoakstudios.com/blog/Post1941_perishable-collections-the- выгоды от удаления по времени –

+0

Ответ dwursteisen верен. Вы должны создать обертку вокруг «Список», которая будет уведомлять подписчиков, когда элементы будут добавлены или удалены из списка. – ihuk

ответ

2

Observable.from(listOfObjects) создаст новое наблюдаемое, которое будет излучать каждый из объектов списка. Вы также можете написать Observable.just(1, 2, 3, 4). Это то же самое.

Итак, если вы добавите объект в свой список, Observable не будет уведомлен.

Вы можете создать собственный список, который уведомит ваш Observable из нового добавленного товара. Вы увидите очень близкое решение его в теме: How can I create an Observer over a dynamic list in RxJava?

Но вы можете покататься в своем списке и, возможно, использовать вместо него Subject? Вместо добавления объекта в свой список просто позвоните по методу theSubject.onNext.

Обратите внимание, что вы будете уведомлены только о том, когда товар будет добавлен. Вы не будете уведомлены, когда предметы будут удалены. Если вы хотите, ваш Observable не должен выделять добавленный товар, кроме предмета, с соответствующим состоянием: new Added<Object>(item), new Removed<Object>(item), например.

+0

Это хорошо работает для меня. По-прежнему кажется, что должен быть немного менее подробный подход, но это, вероятно, просто недостаток понимания с моей стороны. :) – lase

Смежные вопросы