当前位置: 首页 > 知识库问答 >
问题:

如何获得完整的与房间流动的?

周弘毅
2023-03-14

我有一个Android应用程序使用房间来保存我的收藏夹。

@Query("SELECT * FROM favorites ORDER BY lastConsultation DESC")
fun getAll() : Flowable<List<Favorite>>
favoritesRepository.getAll()
        .flatMap { Flowable.just(it) }
        .concatMapEager { Flowable.fromIterable(it) }
        .concatMapEager {
            itemRepository.getItem(it.id)
                .toFlowable()
        }
        .toList()
        .toFlowable()

调用getItem时,ItemRepository返回一个。我从我的favoritesrepository中检索了一个flow > ,并希望在发出网络请求后将每个收藏夹转到一个项目中,我的方法返回一个flow >

我认为添加.flatmap{Flowable.just(it)}将创建一个新的Flowable,它将在项目发出后发出onComplete(因为Room不会发出onComplete)。

这段代码不起作用,onComplete从来没有被调用,所以.tolist()也没有被调用。

是否有一种方法可以实现这些调用(使用并发性,从而实现ConcatMapEagery),同时保持我的可流动实现(我可以使用一个单独的实现来解决这个问题,但我会丢失MainActivity上的“自动通知”)?

共有1个答案

田修为
2023-03-14

我假设realtyrepository返回一个single。试试这个。

favoritesRepository
       .getAll()
       .switchMapSingle { Flowable
           .fromIterable(it)
           .concatMapEager { realtyRepository.getRealty(it.id).toFlowable() }
           .toList()
       }

这将得到我所理解的您想要的,但当数据库更改时,您仍然会得到通知。此外,switchmapsingle将确保,如果同时发生任何DB更新,您正在进行的任何工作都将被取消。

 类似资料:
  • 在过去的几天里做了一些阅读后,我已经取得了一些进展,下面是我想出的代码: 主要活动: HTTPRequest 没有错误,一切运行正常,但问题是-我已经建立了这个代码作为一个测试,如果我可以登录我试图登录的网站,但我无法从中获得任何信息。在我按下按钮后,似乎发生了什么事情,我发送到用户界面线程的输入流给了我这个:“java.io.BufferedInputStream@afe19b8”,每次按下按钮

  • 我在做一个简单的项目上传谷歌驱动器上的文件。然后我需要“显示”这个文件给用户,通过使用html标记,这我需要知道URL到我的图像。但我不知道怎么弄。我试着添加 https://drive.google.com/file/d/

  • 问题内容: 如何使用Jersey 获得请求的完整HTTP REST请求主体? 在我们的例子中,数据将是XML。大小从1K到1MB不等。 该文档似乎表明您应该使用,但我看不到任何示例。 问题答案: 事实证明,您根本不需要做很多事情。 参见下文-参数将包含完整的HTTP正文(本例中为XML)。

  • 我想获取用于登录自定义拦截器的HttpServletACK返回内容。开发环境是Spring Boot 1.5.6Java8 Embeded Tomcat 8.0.35,返回内容是RESTful接口json string。这是我获取超文本传输协议响应内容的代码: 当响应json较短时,代码运行良好。但当返回的json太长时,responseContent只包含部分响应内容,在登录之前解析内容失败(需

  • 已经有一个类似的线程,看起来很像,但这里我有一些不同的问题。 我想要完整的URL,其中URL是动态的。我所有的页面都使用一个通用的nunjuk模板。 让我们面对现实吧。假设我有一个URL路径: /blog/one/two/three 值得注意的是,“博客”是静态的,但“一”、“二”和“三”是变量,它们将根据我网站上请求的博客文章而改变。 我使用以下代码通过传递来获取URL:post“但是当我在UR

  • 问题内容: 我有一个学校项目,可以解析网络代码并将其像数据库一样使用。当我尝试从(https://www.marathonbet.com/en/betting/Football/)提取数据时,我没有全部了解吗? 这是我的代码: 获得的结果(这是显示的联赛的最后一个): 在她上面显示所有联赛。 为什么我没有完整的数据?感谢您的时间! 问题答案: Jsoup的默认正文响应限制为1MB。您可以使用 ma