1. 解析 内部直接使用 Memory buffers 来缓存响应
在 BasicNetwork 实现中,从服务器获取到 Entity 之后,会将 Entity 转换成 byte 数组,缓存在 ByteArrayPool 中。
本来 ByteArrayPool 的出发点是为了减少虚拟机在堆上动态分配内存的开销。但是,如果响应本身就比较大(比如一张大图),这个时候就会有问题了。
一次性向 ByteArrayPool 申请较大内存,不仅引起内存占用量上升,甚至可能引起 OOM 错误。
2. 内部依赖 Apache HttpClient
从 Android 6 开始,Apache HttpClient 被废弃了,这就导致如果想要使用 Volley,要么将 Compile SDK 修改为 23 以下,要么使用
android {
useLibrary 'org.apache.http.legacy'
}
来增加 HttpClient 支持。
3. 粗暴的 Retry Policy
默认超时事件 2.5s,基本算是鸡肋的配置,因为除了 wifi 环境,没可能在 2.5s 之内拿到响应,所以每次都得重新设置。