Retrofit+RxJava原理浅析

Retrofit+RxJava原理浅析Retrofit:核心:返回一个对象newISharedListService()动态代理:代理所有的。动态生成一个类:一个你对应的.class文件的对象–>反射代理的是一个object。看不见的类:代理类拓展类的行为和静态的是一样的主要方法:invoke。所有对接口类型的方法的调用都会执行到invoke方法里面代理对象在内存中,而不在外存中。看不见的。所有对接口的调用都会去执行到代理类的invoke函数中。一旦访问到了invoke,就形成了一个功能的拦截获取到你所有.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Retrofit: 核心:返回一个对象 new ISharedListService()
动态代理:代理所有的
动态生成一个类:一个你对应的.class文件的对象–>反射
代理的是一个object。
看不见的类:代理类
拓展类的行为和静态的是一样的
主要方法: invoke
所有对接口类型的方法的调用都会执行到invoke方法里面
代理对象在内存中,而不在外存中。看不见的。
所有对接口的调用都会去执行到代理类的invoke函数中。
一旦访问到了invoke,就形成了一个功能的拦截


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

获取到你所有的注解信息:request动态变化的内容–》动态建立url–》具体请求的request–》解决okhttp中的配置繁琐的问题

在这里插入图片描述

静态代理:代理的思想:间接

method就是retrofit使用时接口的所有信息 loadServiceMethod–>反射、解析 耗性能?缓存 如果method
已经保存到LinkedHashMap中,先从map里取,如果有就直接拿,没有在创建

返回值和网络请求返回的javaBean已经确定,把具体的网络工厂找出来

在这里插入图片描述

ServiceMethod.build来构建了一个具体的网络请求

对应着okhttp使用时的request

在这里插入图片描述

结合RxJava 的Observer,如果不用Rxjava那就返回的就是一个call对象

adapter

根据 returnType来找合适的adapter
returnType来自反射:

在这里插入图片描述

sharedListCall.enqueue–》onResponse、onFailure
返回的Response怎么解析
RxJava:嵌套,解决嵌套网络访问–》链式调度
Call slb = sharedListService.getSharedList(2,1);–>原生
RxJava:Observable coinRankList =iCoinRankService.getCoinRankList(1);
CallAdapter作用:Call—>java对象(上面两个)
适配 handler.post完成线程切换
Response在主线程执行
RxJavaCallAdapterFactory
两个设计模式:工厂设计模式 :抽象工场 适配器模式
先找工场,再找工场对应的适配器
CallAdapter—>nextCallAdapter:
adapterFactories.get(i).get(returnType,annotations,this)

三种不同适配类型,三种抽象工场

Retrofit和Okhttp对比

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234913.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • stm32的sdio接口_STM32F411

    stm32的sdio接口_STM32F411一、SDIO接口简介SDIO,全称:SecureDigitalInputandOutput,即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、照相机等。SDIO和SD卡规范间的一个重要区别是增加了低速标准。低速卡的目标应用是以最小的硬件开支支持低速I/O能力。低速卡支持类似调制解调器、条码扫描仪和GPS接收器等应用。STM32的SDIO控制器支持多媒体卡(MMC卡)、SD存储卡、SDI/O卡和CE-ATA

    2022年10月3日
    0
  • 2019年总结-做时间的朋友

    2019年总结-做时间的朋友插曲:抽风了,使用在线网页的markdown写2019年的总结,都快写完了,然后手欠点击了总结里贴的一个链接地址,页面毫不留情的跳转了。当我返回到写总结的页面时,发现写好的内容不见了,这是一种什么心情,我太南了~心情顿时不那么好了。重新理一下心情和思绪,简单整几句总结吧。2020年第一天,吃过晚饭,在电脑桌前,打开网易云音乐,播放了收藏的轻音乐,开始写下这些文…

    2022年2月28日
    39
  • 码云,git使用 教程

    码云,git使用 教程codecloud, git usetutorials作者:韩梦飞沙Author:han_meng_fei_sha 邮箱:313134555@qq.comE-mail:313134555@qq.com  新建项目newproject  路径

    2022年4月9日
    41
  • p6spy 非常典型 启用SQL日志「建议收藏」

    p6spy 非常典型 启用SQL日志「建议收藏」官网地址 gitHub地址 在项目的pom.xml中添加依赖 修改项目数据库连接地址ConnectionURL jdbc:mysql://host/db修改为jdbc:p6spy:mysql://host/db 修改数据库driver-class-name driver-class-name:com.mysql.cj.jdbc.Driver修改为com.p6spy.eng…

    2022年10月5日
    0
  • eclipse没有server选项怎么解决

    eclipse是一个开放源代码的、基于java的可扩展开发平台。它使用频率十分高,然而当使用它部署项目时候,经常会发现一个重要的问题就是打开eclipse之后没有了server选项,那么该怎么解决这个问题呢?第一步、在eclipse菜单“Help”中选择“InstallNewSoftware”第二步、在浏览器输入:https://download.eclipse….

    2022年4月7日
    48
  • Java面向对象抽象类案例分析

    Java面向对象抽象类案例分析

    2022年3月6日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号