<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ***** **LruCache** [TOC=6] # 1. Android中的緩存策略 **** ![](https://box.kancloud.cn/05813e99bfe15cc7fb34865616cd90fd.webp) 一般來說,緩存策略主要包含緩存的添加、獲取和刪除這三類操作。如何添加和獲取緩存這個比較好理解,那么為什么還要刪除緩存呢?這是因為不管是內存緩存還是硬盤緩存,它們的緩存大小都是有限的。當緩存滿了之后,再想其添加緩存,這個時候就需要刪除一些舊的緩存并添加新的緩存。 因此LRU(Least Recently Used)緩存算法便應運而生,LRU是近期最少使用的算法,它的核心思想是當緩存滿時,會優先淘汰那些近期最少使用的緩存對象。采用LRU算法的緩存有兩種:LrhCache和DisLruCache,分別用于實現內存緩存和硬盤緩存,其核心思想都是LRU緩存算法。 # 2. LruCache介紹 LruCache是Android 3.1所提供的一個緩存類,所以在Android中可以直接使用LruCache實現內存緩存。而DisLruCache目前在Android 還不是Android SDK的一部分,但Android官方文檔推薦使用該算法來實現硬盤緩存。 LruCache是個泛型類,主要算法原理是把最近使用的對象用強引用(即我們平常使用的對象引用方式)存儲在 LinkedHashMap 中。當緩存滿時,把最近最少使用的對象從內存中移除,并提供了get和put方法來完成緩存的獲取和添加操作。 # 3. LruChahe的使用 ` ~~~ private LruCache<String, Bitmap> mMemoryCache; @Override protected void onCreate(Bundle savedInstanceState) { ? ? ... ? ? // Get max available VM memory, exceeding this amount will throw an ? ? // OutOfMemory exception. Stored in kilobytes as LruCache takes an ? ? // int in its constructor. ? ? final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); ? ? // Use 1/8th of the available memory for this memory cache. ? ? final int cacheSize = maxMemory / 8; ? ? mMemoryCache = new LruCache<String, Bitmap>(cacheSize) { ? ? ? ? @Override ? ? ? ? protected int sizeOf(String key, Bitmap bitmap) { ? ? ? ? ? ? // The cache size will be measured in kilobytes rather than ? ? ? ? ? ? // number of items. ? ? ? ? ? ? return bitmap.getByteCount() / 1024; ? ? ? ? } ? ? }; ? ? ... } public void addBitmapToMemoryCache(String key, Bitmap bitmap) { ? ? if (getBitmapFromMemCache(key) == null) { ? ? ? ? mMemoryCache.put(key, bitmap); ? ? } } public Bitmap getBitmapFromMemCache(String key) { ? ? return mMemoryCache.get(key); } ~~~ `
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看