У меня есть Observable, который испускает случайные биты/логические значения. Мне нужно сделать еще один Observable, который объединяет эти случайные биты для создания и генерации случайных целых чисел. Каждый раз, когда базовый Observable испускает бит, этот Observable добавляет этот бит к битовой строке, как только эта битовая строка достигает определенной длины, этот Observable преобразует ее в целое число и испускает.
Вот иллюстрация:
Вот как я это реализую с помощью Android LiveData:
final StringBuilder bitStringBuilder = new StringBuilder();
final MediatorLiveData<Integer> integerLiveData = new MediatorLiveData<>();
integerLiveData.addSource(
randomSource.getBooleanLiveData(),
new Observer<Boolean>() {
@Override
public void onChanged(Boolean b) {
bitStringBuilder.append(b ? '1' : '0');
if (bitStringBuilder.length() == 31) {
integerLiveData.setValue(Integer.parseInt(bitStringBuilder.toString(), 2));
bitStringBuilder.setLength(0); // clear the bit string builder
}
}
}
);
Как этого добиться с помощью RxJava 2?