• 第三方框架的学习经验


    一、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使用


     
  • 相关阅读:
    TSQL入门(msdn)
    在代码中,获取Entity Framework生成的TSQL查询语句
    Code First(一)
    UDPClient的用法
    Building Applications that Can Talk(转)
    Asynchronous Web and Network Calls on the Client in WPF(摘录)
    DropBox能正常使用了
    显示GIF图标报错:“A generic error occurred in GDI+.”
    第 2 篇Scrum 冲刺博客
    第 1 篇 Scrum 冲刺博客
  • 原文地址:https://www.cnblogs.com/liunx1109/p/14413405.html
Copyright © 2020-2023  润新知