RxJava ( Room): Почему Flowable<Список> возвращает список<Список>?

#android #rx-java #rx-java2 #android-room

#Android #rx-java #rx-java2 #android-room

Вопрос:

Мой запрос Room (из MyObjectDao) с Flowable<List<MyObject>> возвращается List<List<MyObject>> при запуске тестов. Вот запрос:

 @Query("SELECT * FROM myobjects")
Flowable<List<MyObject>> getAllMyObjects();
  

Вот как я извлекаю первый MyObject из запроса:

 MyObject toDelete = myObjectDao.getAllMyObjects().test().values().get(0).get(0);
  

Как вы можете видеть, я получаю List<List<MyObject>> из запроса? Почему это? Почему он помещается в другой список?

Ответ №1:

values() возвращает все выбросы, полученные за время жизни вашего Flowable . Поскольку каждое ваше излучение Flowable является List , values() вернет список всех y наших выбросов списков.

Комментарии:

1. Спасибо, теперь это имеет смысл. Есть ли у вас какие-либо предложения о том, как протестировать мой Flowable, если у него будет только 1 излучение (или если я знаю общее количество)? Нормально ли я это делаю?

2. Вы все еще можете использовать его, просто подтвердите, что это valueCount() есть 1 (или что бы вы ни ожидали от количества выбросов), прежде чем делать что-либо еще

3. Хорошо, я понимаю. Еще раз спасибо за помощь, высоко ценится.