如何升级到RxAndroid 1.0

原文链接

最近很多人问我:RxAndroid在搞什么鬼?

事实上市,RxAndroid之前的版本确实是有点换乱,因此最近进行了一次大得重构。这里有详细的说明,概括来说就是:

从头开始对RxAndroid进行模化的改造,让这个库变成一个可服用的,可组合的模块。

这个目标已经达成,但是如果你升级到1.0,你可能会很奇怪:东西都跑到哪里去了,如何才能让我的代码通过编译?

RxAndroid

AndroidSchedulers 是RxAndroid中唯一保留下来的,但是一些方法签名已经变了。

迁移部分

WidgetObservableViewObservable 被打包进了RxBinding项目中,并且做了一些改进。

LifecycleObservable 迁移到了RxLifecycle项目中。另外需要注意的是,这里进行了一些相对比较大幅度的重构,所以使用的时候请参考一下修改日志。

ContentObservable.fromSharedPreferencesChanges() 迁移到了rx-preferences项目。

删除部分

AppObservable 连同它的bind方法已经被完全删除掉了。AppObservable本身有很多问题:

  • AppObservable尝试来做自动unsubscribe,但是仅仅是在Activity或者Fragment已经paused之后Observable再发出一个事件,才会触发自动unsubscribe。也就是说,如果Activity或者Fragment如果没有paused,一个不会complete的Observable将永远不会被unsubscribe。

  • AppObservable被设计用来在pause之后避免继续受到消息,但是因为HandlerScheduler的一个bug,导致某些场景存在缺陷。

  • AppObservable自动调用了observeOn(AndroidSchedulers.mainThread()),不管你是不是想在主线程这么做。

换句话来说,AppObservable并没有做到它所描述的功能,它的可定制性也比较差,并且还会有一些非期望的副作用。

删除AppObservable的时候,可以这样做:

手动的处理Subscription(或者使用RxLifecycle),来在适当的时机做unsubscribe。检查一下你是否需要使用observeOn(AndroidSchedulers.mainThread())。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RxAndroid 是基于 RxJava 的一个用于 Android 平台的响应式编程框架,它可以帮助我们更加方便地处理异步事件。下面是 RxAndroid 的简单使用示例: 1. 添加依赖 首先,在项目的 build.gradle 文件中添加以下依赖: ``` dependencies { implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' } ``` 2. 创建 Observable 使用 RxAndroid,我们可以通过 Observable 来创建一个发射事件的数据源。例如,我们可以创建一个字符串序列的 Observable,代码如下: ``` Observable<String> observable = Observable.just("Hello", "RxAndroid"); ``` 3. 创建 Observer 接下来,我们需要创建一个 Observer 来观察 Observable 发射的事件。Observer 是一个接口,我们需要实现其中的方法来处理事件。例如,我们可以创建一个打印事件的 Observer,代码如下: ``` Observer<String> observer = new Observer<String>() { @Override public void onSubscribe(Disposable d) { // do nothing } @Override public void onNext(String s) { Log.d(TAG, s); } @Override public void onError(Throwable e) { // do nothing } @Override public void onComplete() { // do nothing } }; ``` 4. 订阅事件 最后,我们需要将 Observable 和 Observer 进行订阅,即将 Observer 注册到 Observable 中。代码如下: ``` observable.subscribe(observer); ``` 这样,我们就可以看到 "Hello" 和 "RxAndroid" 这两个字符串被打印出来了。 RxAndroid 还提供了很多其他的操作符,例如 map、filter、zip 等,可以帮助我们更加方便地处理事件。如果您想深入了解 RxAndroid,建议您阅读官方文档或者相关书籍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值