1.Android 面试知识点记录——Rxjava与协程
Android 面试知识点记录——Rxjava与协程
作者:浪人笔记
RxJava协程与操作符
在RxJava中,浪人浪人map操作符实现简单,源码源码它在原有Observable的浪人浪人基础上添加MapObservable观察者,将变换函数作为参数传递。源码源码MapObservable的浪人浪人onNext方法接收元素,传递给变换函数进行变换,源码源码bl代刷源码结果作为新元素发射。浪人浪人
而flatMap操作符实现相对复杂。源码源码它在原有Observable上添加FlatMapObservable观察者,浪人浪人并将变换函数作为参数传递。源码源码FlatMapObservable的浪人浪人onNext方法接收元素,传递给变换函数得到新Observable,源码源码注册到FlatMapSubscriber中等待下一次数据。浪人浪人数据处理完成后,源码源码调用FlatMapSubscriber的浪人浪人onComplete方法,合并所有得到的Observable成新Observable发射。
RxJava1.0与2.0区别
RxJava2.0在异常处理、影视采集源码html背压支持、线程调度和性能等方面改进和提升。
背压概念与解决方案
背压是指数据产生速度大于消费速度,导致内存溢出等问题。RxJava1.x没有背压支持,使用onBackpressureBuffer、onBackpressureDrop缓解,而RxJava2.0引入Flowable支持背压,页端ddos源码提供更多背压控制策略。
Flowable类型支持背压,通过onBackpressureBuffer、onBackpressureDrop、onBackpressureLatest等方法处理背压问题。Flowable方式类似Observable,使用时需指定背压策略。
subscribeOn与observeOn
subscribeOn只影响第一次指定的mkl_vml源码线程,后续操作不影响。subscribeOn理解为管道入口,observeOn理解为出口,数据处理后出口策略可变。
RxJava数据流回主线程
使用observeOn(AndroidSchedulers.mainThread()),内部实现为Handler(Looper.getMainLooper())。
协程、进程、网站沟通源码线程、协程区别
Kotlin协程基于挂起函数实现,不依赖操作系统和编译器,实现协程效果。
处理回调地狱与协程
协程通过挂起函数减少回调嵌套,提高代码可读性。使用withContext指定协程执行上下文,避免主线程阻塞。
开发中选择调度器
通常选择主线程、IO密集型和CPU密集型调度器,对应Kotlin协程中的上下文。
Android核心知识点记录
包含性能优化、车载技术、Framework底层原理、音视频开发、Jetpack全家桶、Kotlin、Gradle、OkHttp源码解析、Flutter等主题,涵盖Android开发者必备知识。
Android面试题集锦
整理多年面试题集,包括Android基础知识、性能优化、音视频、Jetpack全家桶、Kotlin、Gradle、OkHttp源码解析等内容,为开发者提供面试准备。
Android音视频面试题集
聚焦于Android音视频开发的关键问题,帮助开发者深入理解音视频技术。