焦虑
斐波那契堆
这个作者很懒,什么都没留下…
展开
-
IntentFilter
Action每个Intent只能有一个Action,一般来说set…函数设置的值是唯一的,而add…函数设置的值不是唯一的。如果一个一个intent和IntentFilter要匹配则两者都不为空,且intent中的action能在intentFilter中找到。 我在官网文档中看了这么一句 Action matches if any of the given values match the原创 2016-12-14 20:07:22 · 501 阅读 · 0 评论 -
AIDL Binder
IBinder 是个接口,而Binder是他的实现类,binder的底层实现由驱动程序陷入内核的,大体是进程A将信息给binder从陷入内核,而后再由内核的驱动程序发给进程B,大体是这样具体我也不太清楚。 Binder真正起作用的是onTrancat() 和 Trancat()函数这两个函数主要实现了进程间的信息传递,AIDL大体流程是通过binder告诉另外一个进程我想要执行什么函数,并且原创 2016-11-17 09:41:56 · 392 阅读 · 0 评论 -
Volley ImageLoader
大体逻辑发送网络请求用的是volley,然后多加了一个cache这是个适配器接口推荐是LruCache,先到cache中去找,找不到在添加进volley中到网络中区请求,如果找到了那么就直接就执行图片的添加逻辑,这个逻辑直接就执行了,没有作转到主线程的操作,所一个要求get()函数必须要在主线程调用。如果没在cache中找到就添加进volley,如果这时候已经有相同的请求在队列中了那么就讲请求添加到原创 2016-11-28 09:32:32 · 262 阅读 · 0 评论 -
Volley DefaultRetryPolicy
有一个技术起mCurrentRetryCount计数试了多少次了。在BasicNetwork类中 public NetworkResponse performRequest(Request<?> request) throws VolleyError { long requestStart = SystemClock.elapsedRealtime(); while原创 2016-11-25 16:26:00 · 522 阅读 · 0 评论 -
Volley CacheDispatcher
不断地从mCacheQueue中取出请求,然后到cache中区找,如果不命中则加入到mNetworkQueue队列中让另一个去处理,如果命中,那么分两种情况,不需要刷新就直接 mDelivery.postResponse(request, response);如果需要刷新就 mDelivery.postResponse(request, response, new Runnable() {原创 2016-11-25 09:20:40 · 259 阅读 · 0 评论 -
Volley NetworkDispatcher
这是一个继承了线程Thread的类,用来具体处理网络请求,将request从BlockingQueue中取出来处理。这个类重写了run()方法具体会在这个方法中处理网络请求,存入缓存,以及response的分发。@Override public void run() { Process.setThreadPriority(Process.THREAD_PRIORITY_BAC原创 2016-11-25 08:50:15 · 221 阅读 · 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 · 285 阅读 · 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 · 364 阅读 · 0 评论 -
Volley Http缓存机制
https://www.path8.net/tn/archives/2745//如果你第二次 (或第三次,或第四次) 请求相同的数据,你可以告诉服务器你上一次获得的最后修改日期:在你的请求中发送一个 If-Modified-Since 头信息,它包含了上一次从服务器连同数据所获得的日期。如果数据从那时起没有改变,服务器将返回一个特殊的 HTTP 状态代码 304,这意味着 “从上一次请求后这个数据原创 2016-11-23 20:45:26 · 309 阅读 · 0 评论 -
volley PoolingByteArrayOutputStream
概述PoolingByteArrayOutputStream继承了ByteArrayOutputStream然后其中有加了一个ByteArrayPool,当ByteArrayOutputStream中的buff数组容量慢了之后,从ByteArrayPool获取新的数组,这样heap和垃圾回收机制可以少干活。这个重写了write()函数在调用基类的write之前先检查是否满了如果满了就用Pooling原创 2016-11-23 15:25:45 · 340 阅读 · 0 评论 -
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 · 289 阅读 · 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 · 408 阅读 · 0 评论