Android干货走进android

给android开发者使用rxjava的7个建议

2016-07-01  本文已影响436人  brzhang

原文地址:http://futurice.com/blog/top-7-tips-for-rxjava-on-android
翻译:brzhang
翻译水准:并非一字一句翻译。

文章的背景

作者介绍了一段经历,话说他们做了一个大胆的尝试,将他们的android架构使用rxjava重构,结果,遇到了一些问题,大概就是从之前的null pointer 变成了现在的线程问题,然而作者当时也陷入了困境,发现遇到问题了,stackover也似乎帮不上什么忙,但经过几个月的努力,他们依然成功了,重构出了一个可测试性比较好的框架,所以才有了这篇文字吧,总之,虽然说rxjava上手难度是有的,但非常值得试一试!

预备知识

首先看一下这个Observer-Operation-Subscriber(我个人认为应该说成是Observable-Operation-Subscriber) 链:

Paste_Image.png

比较简单,它表示发送了一个整形5,经过一个Operation 为+2的操作,最后发送7给Subscriber,实际上也是(Observer),要注意这个过程是异步的,也就是说subscriber并不知道原始的那个5已经被加工运算过,其实它认为Observable发送给他的就是7。如果你对函数式编程的概念不了解,那么这里有一篇文章是给你,
a wide-spread post about Rx

那么接下来的,将是本文的重点了,也就是rxjava的七个建议。

Paste_Image.png

然而,还有更加重要的一点,那就是一个observable是可以被多次订阅的,这是因为,onSubscribe方法会为每个subscriber去独立的执行。那么有没有什么办法保证subscriber接收到其他的subscriber接收过的数据,答案显然是有的,那就是

作者这里给出了一个应用cache的例子self-contained example

这里是官方文档.

.subscribe(new Subscriber<QueryMatchResponse>() {
    @Override
    public void onCompleted() {
      
    }

    @Override
    public void onError(Throwable e) {
   
    }

    @Override
    public void onNext(QueryMatchResponse response) {
        
    }
});

个人觉得,这个地方没有必要太较真。

作者最后总结,如果你想使用rxjava构建一个android框架,可以参考他的这个示例,这当然是一顿相当不错的午餐咯
rx-android-architecture

上一篇下一篇

猜你喜欢

热点阅读