RxJava之调度器(Schedulers)

本文深入探讨了RxJava中的Scheduler,包括io、computation、immediate、newThread和trampoline等类型,并详细阐述了非阻塞I/O操作的实现。重点讨论了SubscribeOn和ObserveOn的使用,特别是observeOn在处理Android应用中的作用,同时解析了AndroidSchedulers的源码,最后介绍了默认调度器的选择与应用。
摘要由CSDN通过智能技术生成
       作为一个Android开发者,耳熟能详的一句话就是,Android的主线程不能做耗时操作,具体啥原因也不用多说了。  RxJava作为广泛应用的工具库,不应该没有对耗时操作的处理。对于多线程和并发编程应该有独特的理解。在之前的基础上,我们深入理解RxJava中的调度器(Schedulers)在Android开发中如何以响应式的方式创建网络操作,内存访问,以及耗时任务。

调度器(Schedulers)

    io

    Schedulers.io()调度器主要用于I/O操作,它基于根据需要,增长或缩减来自适应的线程池。大量的I/O调度操作将创建许多个线程并占用内存。一如既往的是,我们需要在性能和简捷两者之间找到一个有效的平衡点。

    computation

    Schedulers.computation()调度是精于计算工作的,它也是许多RxJava方法的默认调度器   buffer(),debounce(),delay(),interval(),sample(),skip()。

    immediate

    Schedulers.immediate()调度器主要用于立即在当前线程执行你指定的工作。它是timeout(),timeInterval(),以及timestamp()方法默认的调度器。

    newThread

    Schedulers.newThread()调度器主要用于为指定任务启动一个新的线程。

    trampoline

    Schedulers.trampoline()主要用于延迟工作任务的执行。当我们想在当前线程执行一个任务时,并不是立即,我们可以用.trampoline()将它入队。
    trampoline将会处理它的队列并且按序运行队列中每一个任务。它是repeat()和retry()方法默认的调度器。

非阻塞I/0操作的简单实现

    大家都知道I/O操作是一个耗时操作,如果在主线程进行I/O操作,必然会影响UI操作的流畅性。比如保存照片的过程中放在主线程中进行,在保存的过程中,UI是不能进行交互的。该如何处理即能保存照片又能进行UI操作?大家都会想到开一个线程,将存储操作在线程中进行,不会影响UI交互。在RxJava中,我们习惯使用io调度器进行处理。
 
<span style="font-size:14px;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值