OkHttp 源码解析(三):连接池

2018-03-28
阅读 7 分钟
6.2k
上一篇文章(OkHttp 源码解析(二):建立连接)分析了 OkHttp 建立连接的过程,主要涉及到的几个类包括 StreamAllocation、RealConnection 以及 HttpCodec,其中 RealConnection 封装了底层的 Socket。Socket 建立了 TCP 连接,这是需要消耗时间和资源的,而 OkHttp 则使用连接池来管理这里连接,进行连接的重用,提高...

OkHttp 源码解析(二):建立连接

2018-03-11
阅读 12 分钟
5.2k
上一篇文章(OkHttp源码解析(一):基本流程)介绍了 OkHttp 的基本流程,包括 Request 的创建、Dispatcher 对 Request 的调度以及 Interceptor 的使用。OkHttp 中默认会添加 RetryAndFollowUpInterceptor、BridgeInterceptor、CacheInterceptor、ConnectInterceptor 以及 CallServerInterceptor 这几个拦截器。本文主...

Okio 源码解析(二):超时机制

2018-01-16
阅读 8 分钟
5.8k
上一篇文章(Okio 源码解析(一):数据读取流程)分析了 Okio 数据读取的流程,从中可以看出 Okio 的便捷与高效。Okio 的另外一个优点是提供了超时机制,并且分为同步超时与异步超时。本文具体分析这两种超时的实现。

Okio 源码解析(一):数据读取流程

2018-01-04
阅读 9 分钟
6.8k
Okio 是 square 开发的一个 Java I/O 库,并且也是 OkHttp 内部使用的一个组件。Okio 封装了 java.io 和 java.nio,并且有多个优点:

OkHttp 源码解析(一):基本流程

2017-12-31
阅读 13 分钟
5.9k
OkHttp 是一款用于 Android 和 Java 的网络请求库,也是目前 Android 中最火的一个网络库。OkHttp 有很多的优点:

Retrofit 源码解析

2016-08-30
阅读 10 分钟
7.5k
Retrofit 是 Square 推出的 HTTP 框架,主要用于 Android 和 Java。Retrofit 将网络请求变成方法的调用,使用起来非常简洁方便。本文先简要介绍一下 Retrofit 的用法,然后具体分析其源码执行的流程。

Android Activity启动模式总结

2016-04-24
阅读 3 分钟
4.7k
Activity 作为 Android 四大组件之一,几乎是被接触得最多的。Activity 中有个启动模式的概念,分别是 standard、singleTop、singleTask 以及 singleinstance,这篇文章总结一下这四种启动模式的特点。

Android LruCache源码分析

2016-04-23
阅读 4 分钟
5.4k
Android 中常常会用通过网络请求数据,为了节省流量、电量以及时间等等,一般会把得到的数据进行缓存。缓存分为内存缓存和文件缓存。Android 自带的内存缓存是 LRU 机制,也即是最近最少使用算法,对应的类是 LruCache。要说它的原理,一句话概括就是使用了 LinkedHashMap。本文具体分析 LruCache 源码的实现,其实还是...

Android Volley源码解析

2016-04-09
阅读 13 分钟
3.4k
Volley 是非常火的一个网络请求框架,一方面它是由谷歌官方在2013年I/O大会推出的,另一方面大家都说它很优秀。Volley 非常适合去进行数据量不大,但通信频繁的网络操作。Volley 可以传输 String 、Json,还可以很方便的加载图片。它的用法很简单,无非就是获取一个 RequestQueue ,把请求 request 加入其中。网上的介绍...

Android IntentService源码分析

2016-04-06
阅读 3 分钟
4.3k
Service 是 Android 四大组件之一,用于后台运行,但由于 Service 依然运行在主线程,所以是不能直接进行耗时操作的。如果有耗时操作,还是需要放到子线程中,可以手动开启线程,也可以使用 Android 提供的一个非常简便的类 IntentService。这个类的源码还是很简单的,本文分析一下它的实现。

Android Handler的原理

2016-04-05
阅读 7 分钟
11.9k
在 Android 中,只有主线程才能操作 UI,但是主线程不能进行耗时操作,否则会阻塞线程,产生 ANR 异常,所以常常把耗时操作放到其它子线程进行。如果在子线程中需要更新 UI,一般是通过 Handler 发送消息,主线程接受消息并且进行相应的逻辑处理。除了直接使用 Handler,还可以通过 View 的 post 方法以及 Activity 的 r...

Android ViewStub的使用

2016-03-28
阅读 3 分钟
10.6k
在Android开发中,布局的加载速度会影响APP的性能。如果布局实现的不好,会导致程序非常占内存并且UI运行缓慢。优化布局可以从三个方面着手:

Android AsyncTask源码分析

2016-03-27
阅读 5 分钟
5.4k
Android中只能在主线程中进行UI操作,如果是其它子线程,需要借助异步消息处理机制Handler。除此之外,还有个非常方便的AsyncTask类,这个类内部封装了Handler和线程池。本文先简要介绍AsyncTask的用法,然后分析具体实现。

Android 自定义View---进度条

2016-03-17
阅读 5 分钟
5.1k
简介 Android系统内置的控件有时候无法满足我们的效果,这时候可以自定义View。自定义View可以通过几种方式实现: 继承View重写OnDraw方法 继承ViewGroup实现特殊的Layout 继承特定的View(比如TextView) 继承特定的ViewGroup(比如LinearLayout) 本文实现一个通过继承View实现自定义的加载进度条,效果如下图所示: (gif...

Android View绘制流程总结

2016-03-17
阅读 4 分钟
8.6k
View occupies a rectangular area on the screen and is responsible for drawing and event handling