对服务器的 RxJava 和 POST/PUT 请求

vkislicins

我正在尝试提出一种使用RxJava. 入门的东西很容易与RxJavaMVP架构,但是,我挣扎了一下在服务器上更新的东西。一个简单的例子是“用户更改了他们的个人资料,我需要将它保存到服务器”。以前,我很可能会创建一个AsyncTask来处理PUT对服务器请求,或者我会使用 OkHttp 回调功能。

在新世界中,我正在考虑使用Service或者可能是一个Singleton类来向用户发送此类更新。这个想法是确保订阅不是 UI 生命周期的一部分。我已经Service定义并处理了应用程序中的一些内容,因此将其扩展为调度用户配置文件更新之类的内容不会有太多工作。我有点挣扎的部分是我在哪里保存我的disposables 以及什么时候取消订阅?

我真的没有任何代码可以共享,但是假设我有一个名为的类UserDispatcher,它提供了以下方法:

    public Observable<User> dispatchUserUpdate(@NonNull User user) {
        return mRepository
            .updateUserProfile(user)
            .subscribeOn(mSchedulerProvider.io())
            .observeOn(mSchedulerProvider.ui());
    }

UserDispatcher目前在 my 中创建Service因此 Observable 返回到Service并在 中订阅Service(但这可能是错误的)。

约斯里兹

退订

Reactive 世界中的取消订阅不应与非 Reactive 世界不同。所以考虑应该是相同的Service,而不是Activity像你所说的那样,Service生命周期与 UI 无关,因此它的生命周期非常简单(开始/停止)。
所以你需要在 Service 中保留你的订阅,它是发送 的那个Observable,并在onDestroy回调中取消订阅

使用寿命

关于服务的生命周期,取消订阅仅适用于您的Observable任务尚未完成且您不想泄漏资源的情况。但是,正常的路径是,您需要ServiceObservable完成停止
您应该在这里使用一个已启动的服务(不是绑定的),该服务将一直保持活动状态,直到您将其停止(或系统将其杀死以获取资源),因此在您分派 之后它不会自行停止Observable,您应该负责停止更新Observable完成后。

推荐模式 - 计划作业

一般来说,Singleton不推荐使用,因为它不是Android系统组件,因此Android无法像Service. 诸如在工作尚未完成时重新安排、在系统即将终止Service时收到通知之类的事情……
至于Service,从Lollipop现在起也不再推荐这样做,因为我们现在有了JobSchedulerAPI,因为系统更加严格关于后台处理(或其他支持旧 Android 版本的 API,如 Firebase JobDispatcher)。
但它不应该有太大的不同,JobScheduler例如API 中,你有onStopJob你应该取消订阅事件。

作业调度程序生命周期

关于与 的生命周期JobScheduler,它具有相同的模式,当Observable任务完成时,您应该调用jobFinished()向系统发出您的工作已完成的信号(JobScheduler使用 Service 来完成实际工作)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

存储和请求服务器信息

来自分类Dev

RxJava:数据库和远程服务器

来自分类Dev

从服务器的$ .getJSON请求中获取aoColumnDefs和aoColumns?

来自分类Dev

openvpn阻止对Web服务器和SSH的外部请求

来自分类Dev

服务器请求uri页面和相关页面

来自分类Dev

服务器端事件和 Ajax 请求

来自分类Dev

使用节点和代理 API 请求响应服务器

来自分类Dev

使用RxJava和改造的定期HTTP请求

来自分类Dev

使用RxJava和改造的定期HTTP请求

来自分类Dev

RxJava和Retrofit-根据服务器响应引发自定义异常

来自分类Dev

在RxJava中结合使用“ skipWhile”和“ repeatWhen”来实现服务器轮询

来自分类Dev

服务器启动的请求

来自分类Dev

使用Java和JSON请求的服务器端自动化测试

来自分类Dev

如何同时使用historyApiFallback和代理远程api请求来设置Webpack开发服务器?

来自分类Dev

使用Ajax POST请求将图像和JSON数据发送到服务器?

来自分类Dev

使用带有请求包和功能pipe()的Node.js服务器吗?

来自分类Dev

使用ASP .NET MVC和jQuery AJAX请求下载服务器生成的CSV

来自分类Dev

服务器端请求和XmlHTTPRequest(客户端)和安全性

来自分类Dev

Wakanda和SSL:服务器名称以及如何正常处理HTTP请求?

来自分类Dev

Python请求:连接到代理服务器时忽略异常和错误

来自分类Dev

使用nodejs和mysql的无服务器=>在完成请求之前退出进程

来自分类Dev

远程服务器返回错误:(413)请求实体太大。Elasticsearch和JSON

来自分类Dev

使用相同的POST请求将文件上传到MongoDB和本地服务器

来自分类Dev

如何在同一服务器上同时发出HTTP和Websocket请求?

来自分类Dev

具有Recv /发送命令和请求/响应设计的C ++服务器

来自分类Dev

React / Axios API获取请求问题(CORS和内部服务器错误500)

来自分类Dev

使用HttpURLConnection和Node.js服务器的Java JSON发布请求

来自分类Dev

GET和POST请求不适用于ip地址(内部服务器错误)

来自分类Dev

IIS 8中的WCF和EntityFramework错误服务器在处理请求时遇到错误

Related 相关文章

  1. 1

    存储和请求服务器信息

  2. 2

    RxJava:数据库和远程服务器

  3. 3

    从服务器的$ .getJSON请求中获取aoColumnDefs和aoColumns?

  4. 4

    openvpn阻止对Web服务器和SSH的外部请求

  5. 5

    服务器请求uri页面和相关页面

  6. 6

    服务器端事件和 Ajax 请求

  7. 7

    使用节点和代理 API 请求响应服务器

  8. 8

    使用RxJava和改造的定期HTTP请求

  9. 9

    使用RxJava和改造的定期HTTP请求

  10. 10

    RxJava和Retrofit-根据服务器响应引发自定义异常

  11. 11

    在RxJava中结合使用“ skipWhile”和“ repeatWhen”来实现服务器轮询

  12. 12

    服务器启动的请求

  13. 13

    使用Java和JSON请求的服务器端自动化测试

  14. 14

    如何同时使用historyApiFallback和代理远程api请求来设置Webpack开发服务器?

  15. 15

    使用Ajax POST请求将图像和JSON数据发送到服务器?

  16. 16

    使用带有请求包和功能pipe()的Node.js服务器吗?

  17. 17

    使用ASP .NET MVC和jQuery AJAX请求下载服务器生成的CSV

  18. 18

    服务器端请求和XmlHTTPRequest(客户端)和安全性

  19. 19

    Wakanda和SSL:服务器名称以及如何正常处理HTTP请求?

  20. 20

    Python请求:连接到代理服务器时忽略异常和错误

  21. 21

    使用nodejs和mysql的无服务器=>在完成请求之前退出进程

  22. 22

    远程服务器返回错误:(413)请求实体太大。Elasticsearch和JSON

  23. 23

    使用相同的POST请求将文件上传到MongoDB和本地服务器

  24. 24

    如何在同一服务器上同时发出HTTP和Websocket请求?

  25. 25

    具有Recv /发送命令和请求/响应设计的C ++服务器

  26. 26

    React / Axios API获取请求问题(CORS和内部服务器错误500)

  27. 27

    使用HttpURLConnection和Node.js服务器的Java JSON发布请求

  28. 28

    GET和POST请求不适用于ip地址(内部服务器错误)

  29. 29

    IIS 8中的WCF和EntityFramework错误服务器在处理请求时遇到错误

热门标签

归档