volley源码
斐波那契堆
这个作者很懒,什么都没留下…
展开
-
Volley 图片缩放逻辑
private static int getResizedDimension(int maxPrimary, int maxSecondary, int actualPrimary, int actualSecondary) { // If no dominant value at all, just return the actual. if原创 2016-11-22 19:20:29 · 293 阅读 · 0 评论 -
Volley DiskBasedCache
大体思路这其实是一个LRU cache 用private final Map<String, CacheHeader> mEntries = new LinkedHashMap<String, CacheHeader>(16, .75f, true); 来维护一个优先队列,在空间满了的时候讲那些队头的删掉,因为 LinkedHashMap的构造函数最后一个参数access原创 2016-11-24 15:51:48 · 411 阅读 · 0 评论 -
Volley ImageLoader
大体逻辑发送网络请求用的是volley,然后多加了一个cache这是个适配器接口推荐是LruCache,先到cache中去找,找不到在添加进volley中到网络中区请求,如果找到了那么就直接就执行图片的添加逻辑,这个逻辑直接就执行了,没有作转到主线程的操作,所一个要求get()函数必须要在主线程调用。如果没在cache中找到就添加进volley,如果这时候已经有相同的请求在队列中了那么就讲请求添加到原创 2016-11-28 09:32:32 · 285 阅读 · 0 评论 -
Volley DefaultRetryPolicy
有一个技术起mCurrentRetryCount计数试了多少次了。在BasicNetwork类中 public NetworkResponse performRequest(Request<?> request) throws VolleyError { long requestStart = SystemClock.elapsedRealtime(); while原创 2016-11-25 16:26:00 · 544 阅读 · 0 评论 -
Volley CacheDispatcher
不断地从mCacheQueue中取出请求,然后到cache中区找,如果不命中则加入到mNetworkQueue队列中让另一个去处理,如果命中,那么分两种情况,不需要刷新就直接 mDelivery.postResponse(request, response);如果需要刷新就 mDelivery.postResponse(request, response, new Runnable() {原创 2016-11-25 09:20:40 · 276 阅读 · 0 评论 -
Volley NetworkDispatcher
这是一个继承了线程Thread的类,用来具体处理网络请求,将request从BlockingQueue中取出来处理。这个类重写了run()方法具体会在这个方法中处理网络请求,存入缓存,以及response的分发。@Override public void run() { Process.setThreadPriority(Process.THREAD_PRIORITY_BAC原创 2016-11-25 08:50:15 · 225 阅读 · 0 评论 -
Volley RequestQueue
这个类没有继承任何类或借口,所以他不是一个Queue。 这个类主要维护了几个队列,将request加紧队列然后开启线程处理队列中的request private final Map<String, Queue<Request>> mWaitingRequests = new HashMap<String, Queue<Request>>();这个mWaitingReques原创 2016-11-24 16:45:25 · 291 阅读 · 0 评论 -
Volley http协议摘要
Etag主要为了解决Last-Modified无法解决的一些问题.他能比Last_Modified更加精确的知道文件是否被修改过.如果有个 文件修改非常频繁,比如在秒以下的时间内进行修改,比如1秒内修改了10次,If-Modified-Since能检查只能秒级的修改,所以这种修改无法 判断.原因是UNIX记录MTIME只能精确到秒.所以我们选择生成Etag,因为Etag可以综合Inode,MTime原创 2016-11-23 21:23:46 · 388 阅读 · 0 评论 -
Volley Http缓存机制
https://www.path8.net/tn/archives/2745 //如果你第二次 (或第三次,或第四次) 请求相同的数据,你可以告诉服务器你上一次获得的最后修改日期:在你的请求中发送一个 If-Modified-Since 头信息,它包含了上一次从服务器连同数据所获得的日期。如果数据从那时起没有改变,服务器将返回一个特殊的 HTTP 状态代码 304,这意味着 “从上一次请求后这个数据原创 2016-11-23 20:45:26 · 311 阅读 · 0 评论 -
volley PoolingByteArrayOutputStream
概述PoolingByteArrayOutputStream继承了ByteArrayOutputStream然后其中有加了一个ByteArrayPool,当ByteArrayOutputStream中的buff数组容量慢了之后,从ByteArrayPool获取新的数组,这样heap和垃圾回收机制可以少干活。这个重写了write()函数在调用基类的write之前先检查是否满了如果满了就用Pooling原创 2016-11-23 15:25:45 · 359 阅读 · 0 评论 -
Volley ByteArrayPool
private List<byte[]> mBuffersByLastUse = new LinkedList<byte[]>(); //维护一个优先队列,在容量超过mSizeLimit时候从优先队列的队头开始删除 private List<byte[]> mBuffersBySize = new ArrayList<byte[]>(64); //用来存放所有的数组,因为是按照二分原创 2016-11-23 09:43:26 · 386 阅读 · 0 评论