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

如何使用RxJava而不是带有android架构组件的LiveData?

苏高峰
2023-03-14

注意:如果您已经在使用RxJava或Agera这样的库,那么您可以继续使用它们,而不是LiveData。但是当您使用它们或其他方法时,请确保您正确地处理了生命周期,以便在相关的LifecycleOwner停止时数据流暂停,并且在LifecycleOwner被销毁时数据流被销毁。您还可以添加android.arch.lifecycle:reActiveStreams工件,以便将LiveData与另一个reactive streams库(例如,RxJava2)一起使用。

上面的语句是从android developer页面复制的。这里它指定了如果你正在使用RxJava,你就不需要使用LiveData。因为两者都遵循可观察的模式。我想知道如何使用RxJava而不是LiveData来调用rest api。我试了很多,但是没有找到任何答案。如果有人帮助我解决这个问题,那将是非常好的。提前致谢

共有1个答案

宇文智敏
2023-03-14

您可以使用这些方法Publisher 转换为LiveData ,反之亦然。

>

  • LiveDataReActiveStreams.fromPublisher(publisher publisher) --将为您提供LiveData对象

    LiveDataReActiveStreams.toPublisher(LifecycleOwner lifecycle,liveData liveData) --将提供您的RXJavaPublisher 对象。

    然后可以使用pub-sub模式,只需订阅发布服务器即可。

  •  类似资料:
    • 我正在探索新的Android架构组件,并希望将其实现到一个Android应用程序中。当我在iOS开发中使用MVVM时,我对MVVM非常了解。阅读了Google提供的Android Architecture Components guide:https://developer.Android.com/topic/libraries/Architecture/guide.html 我有几个问题...

    • 我知道如何使用ViewModel,Repository和Room将数据从数据库传输到屏幕。但是如何使用POST方法实现登录活动。我需要从ViewModel或AuthorizationRepository创建LiveData isAuthorated吗?有人能展示在android架构组件中使用命令方法的示例吗?

    • 谷歌的android架构组件教程中有一部分解释了如何抽象通过网络获取数据的逻辑。在其中,他们创建了一个名为NetworkBoundResource的抽象类,使用LiveData创建一个反应流,作为所有反应网络请求的基础。 根据我的理解,这门课的逻辑是: a)创建一个名为“result”的MediatorLiveData作为主要返回对象,并将其初始值设置为resource.loading(null)

    • 问题内容: 我很难理解如何使用RxJava构建缓存。我的想法是我需要从内存缓存中获取数据或从数据库(dynamoDb)加载。但是,该缓存应该在片段和/或线程之间共享。因此,我需要返回当前正在运行但尚未完成的现有可观察对象。这使线程可以赶上而不做不必要的工作。我是RxJava的新手,所以这是我作为草图考虑的内容(为简洁起见,缺少一些代码): } 是否有更好的方法可以通过RxJava实现(对缓存策略不

    • 我不知道在Android中使用RxJava和从Android体系结构组件中使用LiveData的原因,如果以代码的形式解释两者之间的差异,并提供示例,将会非常有帮助。