📜  适用于 Android 的 RxJava

📅  最后修改于: 2022-05-13 01:58:44.764000             🧑  作者: Mango

适用于 Android 的 RxJava

RxJava 是一个 JVM 库,它使用可观察序列来执行异步和基于事件的编程。它的主要构建块是三个 O,代表 Operator、Observer 和 Observables。我们使用它们来完成我们项目中的异步任务。它极大地简化了我们项目中的多线程。它帮助我们确定要在哪个线程上运行任务。

RxAndroid 到底是什么?

RxAndroid 是一个 RxJava for Android 扩展,仅用于 Android 应用程序。 RxAndroid 添加了 Android 所需的主线程。我们将需要 Looper 和 Handler 来执行主线程,以便在 Android 中使用多线程。

mainThread()返回一个调度程序,它有助于在主 UI 线程上执行任务,主要用于 Android 项目。所以,这里我们有 AndroidScheduler。 mainThread() 用于访问应用程序的主线程,以便我们可以执行更新 UI 等操作。因为从技术上讲,从后台线程更新 UI 在 Android 中是不可能的,所以我们可以使用 AndroidSchedulers.mainThread() 来更新主线程上的任何内容。在内部,它利用 Handler 和 Looper 概念在主线程上执行操作。

原因是 RxAndroid 可能没有项目中使用的最新版本的 RxJava。因此,我们使用 RxJava 依赖来覆盖 RxAndroid 使用的内部 RxJava 版本的版本控制。

这个的实际使用

RxJava 利用了运算符的力量,正如谚语所说,“RxJava 几乎所有东西都有一个运算符。”

示例 #1:

考虑以下场景:我们想要进行 API 调用并将结果保存到某个存储/文件中。这将是一个长时间运行的任务,在主线程上执行一个长时间运行的任务可能会导致意外行为,例如 App Not Responding。因此,要完成上述任务,我们可能会考虑使用 AsyncTask 作为我们的首选解决方案。但是,在 Android R 中,AsyncTask 将被弃用,而 RxJava 等库将成为解决方案。使用 RxJava 代替 AsyncTask 可以让我们编写更少的代码。它改进了代码管理,因为 AsyncTask 会使代码变得冗长且难以管理。

示例 #2:

考虑一个场景,我们想从一个 API 中检索用户详细信息,然后使用从之前的 API 中获取的用户 ID,我们调用另一个 API 来检索用户的好友列表。在使用 AsyncTask 时,我们可能需要使用多个 AsyncTask 并以一种允许我们组合所有 AsyncTask 并将结果作为单个响应返回的方式来管理结果。

示例#3:

考虑以下场景:我们进行 API 调用以获取用户列表,并且我们只想要与给定当前条件匹配的数据。一种通用的方法是进行 API 调用,然后从 Collection 中根据条件过滤特定用户的内容并返回数据。但是,使用 RxJava,我们可以在返回 API 响应的同时通过 filter运算符直接过滤掉数据,而这一切都是在管理线程的同时完成的。

结论

这些是用于 Android 用例的 RxJava 的一些示例,以及我们在项目中需要 RxAndroid 的原因。在 geeks for Geeks 上还有其他文章链接到其他 Rx Java方法,您可以在此处找到。