Android 緩存淺談 (LruCache)

Android 可以通過緩存減少頻繁的網路操作,減少流量、提升性能。

三級緩存流程如下:

Created with Raphaël 2.2.0 加載圖片 判斷手機內存是否有該圖片? 有或無? 從內存中取出圖片 加載完成 判斷手機 SD 卡或外部儲存是否有該圖片? 有或無? 從手機 SD 卡或外部儲存中取出 網路下載該圖片 yes no yes no

三級緩存流程,首先從內存中加載該圖片,因為從內存獲取圖片速度最快,但是內存空間有限,所以從內存緩存使用LruCache,外部緩存即為硬碟緩存,相比內存緩存的速度慢很多,但可儲存空間大,硬碟緩存使用DiskLruCache

Android 緩存機制主要是基於 JAVA 的緩存機制,JAVA 緩存機制有四種,強引用、軟引用、弱引用、虛引用,
著重看軟引用和弱引用。
可參考:強引用、軟引用、弱引用、虛引用

Andorid 2.3版本後,Google 不建議使用軟引用與弱引用!,而是使用強引用

Google 官網描述如下:

	Note: 在過去,一種比較流行的內存緩存實現方法是使用軟引用(SoftReference)或弱引用(WeakReference)對Bitmap進行緩存,
	然而我們並不推薦這樣的做法。從Android 2.3 (API Level 9)開始,垃圾回收機制變得更加頻繁,這使得釋放軟(弱)引用的頻率也隨之增高,
	導致使用引用的效率降低很多。而且在Android 3.0 (API Level 11)之前,備份的Bitmap會存放在Native Memory中,
	它不是以可預知的方式被釋放的,這樣可能導致程序超出它的內存限製而崩潰。
	
	內存緩存以花費寶貴的程序內存為前提來快速訪問位圖。 LruCache類(在API Level 4的Support Library中也可以找到)特別適合用來緩存Bitmaps,
	它使用一個強引用(strong referenced)的LinkedHashMap保存最近引用的對象,
	並且在緩存超出設置大小的時候剔除(evict)最近最少使用到的對象。
一、LurCache介紹
  1. LRU (全稱:Least Recently Used)
    即最少使用算法, 將最近沒有使用的數據從緩存中移除。(全稱:Least Recently Used),即最少使用算法, 將最近沒有使用的數據從緩存中移除。
  2. LurCache
    算法原理把最近使用的對象用強引用存儲在 LinkedHashMap,並且把最近最少使用的對象在緩存大小達到閥值將它從內存中移除。
二、使用

實現 LurCache 緩存的步驟:

  1. 先設置緩存的內存大小,預設為手機內存的 1/8 。
    手機內存獲取方式:
     int maxMemonry = (int) (Runtime.getRuntime() .maxMemory() / 1024)
  2. 重寫 sizeOf的方法,返回對象數量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值