自動釋放記憶體!Facebook推出強大Android圖片庫Fresco
快速而又高效的顯示圖片對 Android 裝置來說是件極其重要的事情,但在過去的幾年裡,在有效儲存影像方面我們面臨了很多問題。圖片太大,而手機又只有很小的記憶體,特別是 Android 裝置還要將記憶體分割給各個應用。所以,太多的圖片總會耗去大部分的記憶體,從而導致應用的崩潰。
為了解決這一問題,Facebook 最近推出了一款用於 Android 應用中展示圖片的強大圖片庫 Fresco,它能夠從網路、本地儲存和本地資源中載入圖片。而且,為了節省資料和 CPU,它擁有三級快取。此外,Fresco 在顯示方面是用了 Drawees,可以顯示佔位符,直到圖片載入完成。而當圖片從螢幕上消失時,會自動釋放圖片所佔的記憶體。Fresco 支援 Android 2.3 及以上版本,目前已託管至 Github 上。
主要特性:
- 記憶體
解壓後的圖片和 Android 的點陣圖都會佔據很大的記憶體,這導致 Java 垃圾收集器更頻繁的執行,也讓應用變得更加緩慢,這一問題在沒有對垃圾收集器進行完善的 Android 5.0 上尤為嚴重。
在 Android 4.x 及以下版本,Fresco 將圖片放置在 Android 記憶體的一個特殊位置。這可以確保當影像不在螢幕上顯示時,可以自動釋放它們所佔的記憶體。讓應用執行的更快速,且不易崩潰。
使用 Fresco 的應用,即使在配置低端的裝置上也能正常執行,而且你無需經常性地去擔心圖片的記憶體佔用情況。
- Streaming
Web 上的漸進式(Progressive)JPEG 圖片已經存在多年,開啟檔案過程中,會先顯示整個圖片的模糊輪廓,隨著掃描次數的增加,圖片變得越來越清晰。這種格式可以說是網路較慢情況下的救星,通過圖片的輪廓知道正在載入的圖片大概是什麼。
Android 自己的圖片庫不支援 streaming,而 Fresco 可以,只需指定一個 URI,你的應用程式就可以隨著資料的到來,自動更新它的顯示。
- 動畫
動畫 GIF 和 WebP 應該是應用的難點,每一幀都是一個大型的點陣圖,而每個動畫都是一系列的幀。Fresco 則負責載入和處理這些幀及管理它們的記憶體。
- Drawing
Fresco 在顯示方面使用了 Drawees,Fresco 的 Drawees 能夠顯示佔位符,直到圖片已載入,並自動顯示到影像到達時:
- 將圖片擴充套件至自定義的焦點,而不是作為處理的中心。
- 使用圓角化或圓形來顯示影像。
- 如果網路載入失敗的話,使用者可以點選佔位符重新載入影像。
- 顯示自定義背景、浮窗小部件(overlays)或影像上的進度條。
- 當使用者點選圖片,自定義浮窗小部件。
- 載入
Fresco 的影像管道可以讓你以多種方法來自定義載入:
- 為一個影像指定不同的 URI,從中選取一個已經快取的顯示。
- 優先顯示低解析度影像,待資料到達後交換到高的解析度。
- 如果影像有 EXIF 縮圖,首先顯示縮圖,直到整個圖片被載入出來(只針對本地圖片)。
- 調整或旋轉影像。
即使是在老版的 Android 上也可以解碼 WebP 影像,只不過不是全部支援。
傳送門:Fresco 官網、Github 託管地址
相關文章
- FaceBook推出的Android圖片載入庫FrescoAndroid
- 初識Facebook的強大Android圖片載入的框架:FrescoAndroid框架
- FireFox記憶體自動釋放Firefox記憶體
- Linux釋放記憶體及手動釋放Oracle共享記憶體段Linux記憶體Oracle
- vector 避免記憶體頻繁分配釋放與手動釋放vector記憶體記憶體
- win10如何設定自動釋放記憶體_win10怎麼設定自動清理系統垃圾釋放記憶體Win10記憶體
- FaceBook開源庫Fresco
- Linux之 手動釋放記憶體Linux記憶體
- vector 的記憶體釋放記憶體
- XCode釋放記憶體XCode記憶體
- linux釋放記憶體Linux記憶體
- android釋放記憶體的一個辦法Android記憶體
- 如何主動釋放 HeapIdle 的記憶體API記憶體
- Linux手動釋放快取記憶體Linux快取記憶體
- Android使用Fresco之下載圖片(包括GIF圖)Android
- Android圖片載入開源庫深度推薦,安利FrescoAndroid
- 記憶體的分配與釋放,記憶體洩漏記憶體
- 自動共享記憶體管理 自動記憶體管理 手工記憶體管理記憶體
- 轉 linux 記憶體釋放Linux記憶體
- Linux釋放cache記憶體Linux記憶體
- linux 記憶體釋放命令Linux記憶體
- 共享記憶體段未釋放導致資料庫記憶體被耗盡記憶體資料庫
- Android記憶體優化之圖片優化Android記憶體優化
- Android圖片載入記憶體佔用分析Android記憶體
- C語言:動態記憶體會被自動釋放嗎?杜絕“野指標”C語言記憶體指標
- Android圖片載入框架Fresco使用詳解Android框架
- Linux系統手動釋放記憶體快取Linux記憶體快取
- 怎麼手動在rstudio中釋放記憶體?記憶體
- C# 垃圾回收釋放記憶體C#記憶體
- 正確釋放Vector的記憶體記憶體
- 直播電商平臺開發,Android | 圖片縮放、自動居中Android
- Android APP 記憶體優化之圖片優化AndroidAPP記憶體優化
- Android圖片記憶體溢位的解決方案Android記憶體溢位
- iOS圖片記憶體優化iOS記憶體優化
- 自動記憶體管理記憶體
- 記憶體動態分配與釋放,malloc和new區別記憶體
- Android圖片載入的框架Fresco使用詳解Android框架
- Android 圖片縮放Android