2015-10-27
10:00 PM
OOM - OutOfMemoryError
一件非常討厭的錯誤
而且是在轉戰 Android 時常常會遇見的錯誤
以前寫 Web 可以說是要用多少記憶體就用多少記憶體...
其實也不是啦 只是 Web 用的記憶體相對於使用者的記憶體大小來說實在是小 case
就算載入一個單眼拍出來的 20M 高解析照片也不是問題
但在 Android 上就麻煩了
好在有團隊開發出一個免費的 Library - Picasso
不論是圖片載入問題, 快取問題還是 AsyncTask 他都幫你處理的穩當當
好了,為了 SEO 而寫的廢話就到這裡
開始介紹如何使用 Picasso 這個套件來簡單避免 OOM 的錯誤
程式碼範例
// 若要了解圖片是從網路, 手機本地端或是從記憶體內取出
// 可開啟圖片標示 分別會以 紅色, 藍色, 綠色表示
Picasso.with(mContext).setIndicatorsEnabled(true);
// 初始化 Picasso
Picasso.with(mContext)
// 傳入檔案路徑 可以是網址或本地檔案
.load( "URL or PATH" )
// 調整大小至與容器相等 亦可使用 resize, 但 resize 似乎只有調整大小 未實作 inSampleSize
.fit()
// 指定圖片尚未載入時的預設圖片
.placeholder(R.drawable.v_image_placeholder)
// 指定圖片載入失敗時的預設圖片
.error(R.drawable.v_image_error)
// 指定圖片置於容器中央 不裁切, 另有 centerCop
.centerInside()
// 不將圖片儲存於記憶體內
.memoryPolicy(MemoryPolicy.NO_STORE)
// 不檢查記憶體內是否存在圖片快取
.memoryPolicy(MemoryPolicy.NO_CACHE)
// 不儲存任何快取
.networkPolicy(NetworkPolicy.NO_CACHE)
// 指定圖片顯示的容器
.into(holder.imageView);
各項資料連結
Picasso
No comments:
Post a Comment