架构师学习--rxjava线程切换

比如有这么一个需求:网络上下载一张图片,然后显示在界面上。常规的做法可能就是开一个子线程负责网络图片的下载,得到图片后,通过Handler发送到UI线程进行界面的更新。这样写,当然也没有问题,但是,这样会显得代码四分五裂,可读性不是很强。但是通过rxjava的链式调用以及线程切换,这样的需求同样能够实现,并且代码的阅读性很强。

一、线程模式

1、四种线程模式
  • Schedulers.io(): io流操作,网络操作,文件流,耗时操作等异步操作
  • Schedulers.newThread():比较常规的异步线程
  • Schedulers.computation():需要cpu大量计算的线程
  • AndroidSchedulers.mainThread():专供android切换到主线程

以上4种模式,io()和mainThread()模式是比较常用的。下面代码测试上游和下游线程的切换

2、线程切换

测试代码如下:
在这里插入图片描述
代码中上游多次切换线程,下游也多次切换线程。测试结果如下:
在这里插入图片描述
结果发现,上游保持在主线程,下游也在主线程。所以可以得出2个结论:

  • 上游线程切换,可以切换多次,以第一次为准;下游线程切换,可以切换多次,以最后一次为准。
  • 上游使用 subscribeOn() 切换线程,下游使用 observeOn() 切换线程。

二、网络下载图片

了解到线程切换的原理,下面使用rxjava实现网络下载图片,并且显示到UI界面上。

1、图片地址

在这里插入图片描述

2、rxjava下载、并显示图片

在这里插入图片描述
使用过程中需要将上游切换到异步线程,下载完成后,需要将下游线程切换到主线程,最后在onNext()方法中显示图片。

3、网络下载图片代码

在这里插入图片描述

4、测试结果如下:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值