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对比

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Django(24)永久重定向和临时重定向「建议收藏」

    Django(24)永久重定向和临时重定向「建议收藏」重定向重定向分为永久重定向和临时重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面。比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面。

  • docker(2)CentOS 7安装docker环境「建议收藏」

    docker(2)CentOS 7安装docker环境「建议收藏」前言前面一篇学了mac安装docker,这篇来学习在linux上安装docker环境准备Docker支持以下的CentOS版本,目前,CentOS仅发行版本中的内核支持Docker。Doc

  • Dede 删除文档同时文章中的图片的方法

    Dede 删除文档同时文章中的图片的方法

  • 域名怎么与主机空间绑定的_域名绑定虚拟主机

    域名怎么与主机空间绑定的_域名绑定虚拟主机域名怎么与主机空间绑定2008-07-2623:41由于各种原因,我们有时候需要在一个IP地址上建立多个web站点,在IIS中,我们可能通过简单的设置达到这个目标。  在IIS中,每个Web站点都具有唯一的、由三个部分组成的标识,用来接收和响应请求:  1、IP地址  2、端口号  3、主机头名。  在IIS中,在一个IP地址上建立多个独

    2022年10月15日
  • phpstorm 怎么实现分屏展示

    phpstorm 怎么实现分屏展示

    2021年10月12日
  • 常用进程调度算法_进程调度算法例题

    常用进程调度算法_进程调度算法例题写在前面:我是【程序员宝藏】的宝藏派发员,致力于创作原创干货。我热爱技术、热爱开源与分享,创作的【计算机基础面试问题】系列文章和【计算机基础主干知识】系列文章广受好评!后期会创作更多优质原创系列文章!如果您对计算机基础知识、编程等感兴趣,可以关注我,我们一起成长!本人力荐:如果觉得CSDN排版不够美观,欢迎来我的个人原创公zong号【程序员宝藏】(号如其名,诚不欺你!)查看有红色重点标记和排版美观的全系列文章(不细你来找我要红包)参考链接:TCP三次握手四次挥手好多同学问我要pdf版,我干脆.

发表回复

您的电子邮箱地址不会被公开。

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