Bitmap的載入和Cache

2021-08-28 19:23:29 字數 1083 閱讀 9716

載入bitmap: bitmapfactory decodefile 、decoderesource、decodestream、decodebytearray

高效載入bitmap的核心思想: 採用bitmapfactory.options, 使用insamplesize(取樣率)引數來縮放;若為1則取樣後的大小為的原始大小,當insamplesize大於1時,x 則取樣後的大小為原圖的1/x;開發建議:insamplesize應為2的指數(1,2,4,8,16)

流程

將bitmapfactory.options的injustdecodebounds設定為true

從bitmapfactory.options中獲取的原始寬高(outwidth , outheight)

根據取樣率的規則並結合目標view所需的大小計算出取樣率insamplesize

快取策略一般包含快取的新增,獲取和刪除(刪除的原因是快取的大小有限制)

目前常用的一種快取演算法是lru(least recently used)即近期最少使用演算法

核心思想:當快取滿時,會優先淘汰那些近期最少使用的快取物件

實現: lrucache (記憶體快取) , disklrucache(儲存裝置快取)不僅僅只適用於bitmap哦

通過editor完成

如果快取需要把url進行特殊處理

disklrucache.editor editor = mdisklrucache.edit(key);

if (editor != null)

查詢:

通過mdisklrucache.get()得到disklrucache.snapshot物件

通過snapshot的getinputstream()得到fileinputstream

列表優化

核心思想:不要在主線程做太耗時的操作

其他考慮: 控制非同步任務的執行頻率

第十二章 Bitmap 的載入和 Cache

由於bitmap的特殊性以及android 對單個應用所施加的記憶體限制,比如16mb,這導致載入 bitmap 的時候很容易出現記憶體溢位。載入 bitmapfactory 類提供了四類方法,decodefile decoderesource decodestream decodebytearra...

Bitmap的高效載入和LruCache快取

本部落格 android應用程式都是有一定記憶體限制的,程式占用了過高的記憶體就容易出現oom outofmemory 異常。因此在展示高解析度的時候,最好先將進行壓縮。壓縮後的大小應該和用來展示它的控制項大小相近。bitmapfactory類提供了四類方法 decodefile decoderes...

大Bitmap的載入

高效使用bitmaps有什麼好處?我們常常提到的 android程式優化 通常指的是效能和記憶體的優化,即 更快的響應速度,更低的記憶體占用。android程式的效能和記憶體問題,大部分都和緊密相關,而的載入在很多情況下很用到bitmap 位圖 這個類。而由於bitmap自身的特性 將每個畫素的屬性...