Если вы хотите просто использовать встроенные методы RxJava для заказа своих наблюдателей, вы можете использовать flatMap и диапазон, чтобы каждый элемент был разбит на несколько элементов с приоритетом, а затем на приоритет. Наблюдатели упорядочиваются на основе того, как они фильтруются.
Вот тривиальный пример:
Observable<Pair<Integer, Object>> shared = RxView.clicks(findViewById(R.id.textView))
.flatMap(c -> Observable.range(0, 2).map(i -> Pair.create(i, c)))
.share();
shared.filter(p -> p.first == 1)
.map(p -> p.second)
.doOnSubscribe(c -> Log.d(TAG, "first subscribed doOnSubscribe"))
.subscribe(c -> Log.d(TAG, "first subscribed onNext"));
shared.filter(p -> p.first == 0)
.map(p -> p.second)
.doOnSubscribe(c -> Log.d(TAG, "second subscribed doOnSubscribe"))
.subscribe(c -> Log.d(TAG, "second subscribed onNext"));
Если вы делаете это повсюду