介绍

  • 它提供了一个可以在给定的Android Handler 上调度 Observable 的调度器 Scheduler,特别是在UI主线程上。
  • 它提供了一些操作符,让你可以更容易的处理 FragmentActivity 的生命周期方法。
  • 它提供了很多Android消息和通知组件的包装类,用于与Rx的调用链搭配使用。
  • 针对常见的Android用例和重要的UI,它提供了可复用的、自包含的响应式组件。(即将到来

Binaries

你可以在 http://search.maven.org 找到用于Maven, Ivy, Gradle和其它构建系统的二进制文件和依赖信息。

示例:

Ivy 示例:

示例

在Android上,通常处理异步任务时你会在主线程上等待(observing)处理结果,一般情况下你使用 AsyncTask 达到这个目的。使用RxJava,你会使用 observeOn 操作符声明你要在主线程等待 Observable 的结果:

这个例子中,Observable在一个新的线程执行,结果通过 在主线程发射。

前面的例子是一个普遍概念的特殊版本:Android使用一个叫 Handler 的类绑定异步通信到消息循环。为了在任意线程 观察 一个Observable,需要创建一个与那个类关联的 Handler,然后使用 AndroidSchedulers.handlerThread 调度器:

在Android上,要在异步操作中访问框架中的对象有些棘手,那是因为Andoid系统可以决定销毁(destroy)一个 Activity,例如,当一个后台线程还在运行的时候,如果这个线程尝试访问一个已经死掉的Activity中的View对象,会导致异常退出(Crash)。(这也会导致内存泄露,因为 Activity 已经不可见了,你的后台线程还持有它的引用。)

这仍然是在Android上使用RxJava需要关注的一个问题,但是通过使用 和其它Observable操作符,你可以优雅地解决这个问题。通常来说,当你在Activity中订阅一个Observable的结果时(无论是直接的还是通过一个内部类),你必须在 onDestroy 里取消订阅,就像下面例子里展示的那样:

这样确保所有指向订阅者(这个Activity)的引用尽快释放,不会再有通知通过 onNext 发射给这个订阅者。

参考资料