工作填坑 - OkHttp 支持 TCP 请求

我们都知道, OkHttp 是我们常用的网络请求框架,可是都是用在了 HTTP 请求上去了,但是我们的项目中既有 HTTP ,又有 TCP 请求,我已经使用了Retrofit+OkHttp+Rxjava的架构,难道再写一套网络请求框架吗,能再这上面改造一下,也同时支持 TCP 请求吗?然后就有了这篇研究。 在这之前,对 OkHttp 了解少的,可以先查阅 源码分析 - OkHttp 对 OkHttp 源码有一个基本认识。 OkHttp 真正请求的地方是 Ca...

阅读更多

源码分析 - OkHttp

前言 把大象放到冰箱里面,一共需要几步。 打开冰箱门 把大象放进去 关上冰箱门 其实 OkHttp 请求也很简单 装配Request(涉及到了请求方法, url , cookie 请求) Client 端发送 Request 请求 接收服务端返回的 Response 数据 so easy OkHttp 的使用请参考 扫盲系列 - OkHttp 基本用法 以下是 OKHTTP 一个常见异步用法实例 OkHttpClient ...

阅读更多

工作填坑 - Retrofit 中对 addCallAdapterFactory() 的理解

使用 Retrofit 的时候, addConverterFactory() 和 addCallAdapterFactory() 好像是必备的, 在上一篇中的 我们知道了 addConverterFactory() 其实就是为了处理请求数据和响应数据的,但是 addCallAdapterFactory() 这个是干嘛的呢,今天就来看一下。 addCallAdapterFactory() 官方给的解释是 Add a call adapter factory f...

阅读更多

工作填坑 - Retrofit 同时支持对 Json 格式和原始数据

最近在封装 HTTP 请求的时候,发现了一个挺悲催的事情,服务端返回的数据,有时候是 json 格式,有时候又不是 json 格式,身为乙方的我,又没办法要求甲方去修改成统一的 json 格式,可是如果统一返回原始数据,又感觉要做太多的无用代码,毕竟使用的是 retrofit + rxjava+ OKhttp ,得充分发挥他们三个的作用才行。 然后就想着自己封装的框架能不能同时兼容 Json 格式和非 Json 格式呢? 感觉应该是可以的,因为我们通常使用 R...

阅读更多

Flutter 填坑 - Android 原生项目嵌入 Flutter

在学习 Android 原生项目嵌套 Flutter ,发现一篇好文章,Flutter学习小计:Android原生项目引入Flutter ,就按照这个跑了一遍,竟然遇到了好几个坑。记录一下。 声明 各个版本号 Flutter 1.12.13 Dart 2.7.0 Android Studio 3.5 接下来就是记录坑的过程 坑一 在 Android 项目中引入Flutter Module 也按...

阅读更多

Flutter 疑问 - FlutterPluginRegistry 无法转换为 FlutterEngine

学习 Android 项目中混合 Flutter 项目,参考的是Flutter学习小计:Android原生项目引入Flutter, 不知道为啥,一直就报 FlutterPluginRegistry 无法转换为 FlutterEngine 这个错误,如下图所示 感觉和版本有关,可是又不知道为啥。 flutter 的版本如下 Flutter 1.12.13 • channel beta • https://github.com/flutter/flutter.git...

阅读更多

Flutter 学习 - Dart 中的 Future

Dart 是单线程的。 单线程和异步并不冲突,因为 APP 在绝大多数情况下都是等待,比如等用户点击,等网络请求返回,等文件 IO 结果,而这些行为并不是阻塞的,比如说,网络请求, Socket 本身提供了 select 模型可以异步查询;而文件 IO ,操作系统也提供了基于事件的回调机制。 所以可以在等待过程中做别的事情,而真正需要相应结果的时候,再去做对应的处理。 因为等待过程并不是阻塞,所以给我的感觉是同时做了很多事情一样。但其实是一个线程在处理你的事...

阅读更多

Flutter 学习 - Dart 基础

Dart Dart 里面所有的东西都是对象,包括 int ,函数 这些对象的父类是 Object , 函数也是一个对象,类型为 Function , 定义常量 在定义变量前加上 final 或 const 关键字 final 可以在运行期间确定值,一旦确定就不能改变了 ,如何赋值无所谓,但是赋值后就不能再改了。 const 表示变量在编译期间就能确定的值,也就是定义 const 常量的时候,必须直接赋一个字面值,而不是一个变量或者公式 ...

阅读更多