載入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自身的特性 將每個畫素的屬性...