zoukankan      html  css  js  c++  java
  • 第三方框架的学习经验

    一、OkHhtp的缓存策略    

            1.同步和异步的区别        

                里面有个Dispatcher这个类来实现,它主要作用是维护请求的状态(同步和异步),并且维护一个线程池,用于执行请求

            同步请求

            同步请求发送请求之后,就会进入阻塞状态,Dispatcher(分发器)主要做两个事情:保存同步请求、移除同步请求,直到收到响应。

            异步请求

            异步请求放到线程池里面,Dispatcher类主要做三件事情:正在执行异步队列、等待执行异步队列、维护一个还有一个线程池

      里面之所以有两个异步请求队列:当前运行的异步队列小于64时候,它就会被放入到正在运行的异步队列(runningAsyncCalls)中,然后去运行线程池,否则就是加入就绪缓冲队列(readyAsyncCalls)当中作为等待

            2.缓存的原理以及实现        


     

     

     

            2.缓存相关的知识

            CacheInterceptor : 缓存拦截器       

            Expirse : 缓存失效的时间

            Cactce-Contral :  控制缓存缓存类型

            private :      客户端可以去缓存

            public :      客户端和代理服务器都可以缓存

            max-age : 表示多少秒后失效(在服务端用的较多)

            no-cache : 通过服务验证码(304)是否能使用缓存

            no-store :  代理和本地都不可以使用缓存,只能从服务器去拿数据

             ETag :   通过返回的Response返回数据比较里面两个内容是否一直

             If-None-Match :   与ETag成对存在的

            Last-Modified : 最后一次修改时间(比如只是添加一个空格,时间就不一样,所以就出现ETag这个关键字段)

            If-Modified-Since :  与Last-Modified成对存在的

    二、Gilde内部大概原理、加载大图片以及产生OOM的解决办法

    LRU的算法内部大概原理

            内部使用LinkedHashMap作为缓存, get和put完成添加和获取的操作,HashMap的remove方法来移除对象,当内部缓存满的时候,会调用trimToSize方法把较早或者使用最少的缓存对象移除出去,添加新的对象。                

    三级缓存 :   网络->本地->内存

            原理:第一次打开app时候,图片首先从网络获得,然后再本地和内存各缓存一份,再去请求相同的url的时候,就会去本地或者内存去找

    图片产生OOM的原因        

            1.一个页面加载过多图片

       2. 加载过大图片没有进行对图片尺寸、质量进行压缩

       3.加载大量图片时候没有对图片做缓存

     加载过大图片应如何处理

    1.可以使用BitMapRegionDecoder

    2.所以为了节约内存,在加载时可以设置Option.inSampleSize。但inSampleSize的取值只能是整数,不能精确缩放到指定尺寸。想要精确缩放,还需要结合inDensity(精度)、inTargetDensity使用


     
  • 相关阅读:
    网页特效代码
    禁止直接在浏览器输入网址访问的代码
    javaScriptalert使用方法
    URL中特殊字符的含义
    Predator:比微软Kinect更强的视频追踪算法来自捷克博士论文(转)
    干净简洁的CSS表单设计实例
    javascript IP 正则表达
    开发者最容易犯的13个JavaScript错误(转)
    一个帮助你处理延迟,重复,循环操作的jQuery插件 timing
    【简报】微软Metro/win8风格的web开发框架 BootMetro
  • 原文地址:https://www.cnblogs.com/liunx1109/p/14413405.html
Copyright © 2011-2022 走看看