<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 功能強大 支持多語言、二開方便! 廣告
                #### 12.2.1 LruCache LruCache是Android 3.1所提供的一個緩存類,通過support-v4兼容包可以兼容到早期的Android版本,目前Android 2.2以下的用戶量已經很少了,因此我們開發的應用兼容到Android 2.2就已經足夠了。為了能夠兼容Android 2.2版本,在使用LruCache時建議采用support-v4兼容包中提供的LruCache,而不要直接使用Android 3.1提供的LruCache。 LruCache是一個泛型類,它內部采用一個LinkedHashMap以強引用的方式存儲外界的緩存對象,其提供了get和put方法來完成緩存的獲取和添加操作,當緩存滿時,LruCache會移除較早使用的緩存對象,然后再添加新的緩存對象。這里讀者要明白強引用、軟引用和弱引用的區別,如下所示。 · 強引用:直接的對象引用; · 軟引用:當一個對象只有軟引用存在時,系統內存不足時此對象會被gc回收; · 弱引用:當一個對象只有弱引用存在時,此對象會隨時被gc回收。 另外LruCache是線程安全的,下面是LruCache的定義: public class LruCache<K, V> { private final LinkedHashMap<K, V> map; ... } LruCache的實現比較簡單,讀者可以參考它的源碼,這里僅介紹如何使用LruCache來實現內存緩存。仍然拿圖片緩存來舉例子,下面的代碼展示了LruCache的典型的初始化過程: int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); int cacheSize = maxMemory / 8; mMemoryCache = new LruCache<String, Bitmap>(cacheSize) { @Override protected int sizeOf(String key, Bitmap bitmap) { return bitmap.getRowBytes() * bitmap.getHeight() / 1024; } }; 在上面的代碼中,只需要提供緩存的總容量大小并重寫sizeOf方法即可。sizeOf方法的作用是計算緩存對象的大小,這里大小的單位需要和總容量的單位一致。對于上面的示例代碼來說,總容量的大小為當前進程的可用內存的1/8,單位為KB,而sizeOf方法則完成了Bitmap對象的大小計算。很明顯,之所以除以1024也是為了將其單位轉換為KB。一些特殊情況下,還需要重寫LruCache的entryRemoved方法,LruCache移除舊緩存時會調用entryRemoved方法,因此可以在entryRemoved中完成一些資源回收工作(如果需要的話)。 除了LruCache的創建以外,還有緩存的獲取和添加,這也很簡單,從LruCache中獲取一個緩存對象,如下所示。 mMemoryCache.get(key) 向LruCache中添加一個緩存對象,如下所示。 mMemoryCache.put(key, bitmap) LruCache還支持刪除操作,通過remove方法即可刪除一個指定的緩存對象。可以看到LruCache的實現以及使用都非常簡單,雖然簡單,但是仍然不影響它具有強大的功能,從Android 3.1開始,LruCache就已經是Android源碼的一部分了。
                  <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>

                              哎呀哎呀视频在线观看