android rxjava面试题,android面试(RxJava)

RxJava:一个在JVM上使用可观测的序列来组成异步的,基于事件的程序的库。说白了就是异步

优势:

使用:

先明白三个概念:

Observable被观察者,Observer观察者,Subscribe订阅

1d00f85c596a7a935d913b662e121c09.png

上游Observable和下游observer通过subscribe建立连接,总共就3步:创建上游,创建下游,建立连接。

46d319585c6786d925835cc870c9295d.png

02070bfcd764aeb7a00fd522fdc1c8f9.png

a667554424c5851d7731f414d0071301.png

可以有个很简便的链式写法:

6b98d7fc809785fd5cbbcbc30982253b.png

subscribe()有很多重载的方法,以下为1~6:

public final Disposable subscribe() {}

public final Disposable subscribe(Consumer super T> onNext) {}

public final Disposable subscribe(Consumer super T> onNext, Consumer super Throwable> onError) {}

public final Disposable subscribe(Consumer super T> onNext, Consumer super Throwable> onError, Action onComplete) {}

public final Disposable subscribe(Consumer super T> onNext, Consumer super Throwable> onError, Action onComplete, Consumer super Disposable> onSubscribe) {}

public final void subscribe(Observer super T> observer) {}

1:无参数,下游不关心任何事件

2:只关心next事件

3,只关心next和error,其他同理。

线程调度:

d214800d52dfad4b4e038e0b913f2de8.png

尽可能使用内置schedeler,因为在RxJava内部使用线程池来维护这些线程,效率较高。

Schedulers.io():io操作,用于网络,读写文件等io密集型操作

Schedulers.computation():CPU计算密集型操作,用于需要大量计算的操作

Schedulers.newThread():新开线程

AndroidSchedulers.mainThread():代表Android主线程

网络请求时,如果activity退出了,下游无法更新UI了怎么办?

RxJava中内置了一个容器CompositeDisposable,每次得到一个Disposable就调用add方法添加到容器中,所以当退出时,调用CompositeDisposable.clear()即可切断所有水管。

参考:https://www.jianshu.com/u/c50b715ccaeb

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值