Search

Android - 使用 Picasso 解決圖片載入造成 OutOfMemoryError 的問題

2015-10-27 10:00 PM

OOM - OutOfMemoryError

一件非常討厭的錯誤

而且是在轉戰 Android 時常常會遇見的錯誤

以前寫 Web 可以說是要用多少記憶體就用多少記憶體...

其實也不是啦 只是 Web 用的記憶體相對於使用者的記憶體大小來說實在是小 case

就算載入一個單眼拍出來的 20M 高解析照片也不是問題

但在 Android 上就麻煩了

好在有團隊開發出一個免費的 Library - Picasso

不論是圖片載入問題, 快取問題還是 AsyncTask 他都幫你處理的穩當當

好了,為了 SEO 而寫的廢話就到這裡

開始介紹如何使用 Picasso 這個套件來簡單避免 OOM 的錯誤

程式碼範例
  1. // 若要了解圖片是從網路, 手機本地端或是從記憶體內取出
  2. // 可開啟圖片標示 分別會以 紅色, 藍色, 綠色表示
  3. Picasso.with(mContext).setIndicatorsEnabled(true);
  4.  
  5. // 初始化 Picasso
  6. Picasso.with(mContext)
  7. // 傳入檔案路徑 可以是網址或本地檔案
  8. .load( "URL or PATH" )
  9. // 調整大小至與容器相等 亦可使用 resize, 但 resize 似乎只有調整大小 未實作 inSampleSize
  10. .fit()
  11. // 指定圖片尚未載入時的預設圖片
  12. .placeholder(R.drawable.v_image_placeholder)
  13. // 指定圖片載入失敗時的預設圖片
  14. .error(R.drawable.v_image_error)
  15. // 指定圖片置於容器中央 不裁切, 另有 centerCop
  16. .centerInside()
  17. // 不將圖片儲存於記憶體內
  18. .memoryPolicy(MemoryPolicy.NO_STORE)
  19. // 不檢查記憶體內是否存在圖片快取
  20. .memoryPolicy(MemoryPolicy.NO_CACHE)
  21. // 不儲存任何快取
  22. .networkPolicy(NetworkPolicy.NO_CACHE)
  23. // 指定圖片顯示的容器
  24. .into(holder.imageView);
  25.  
各項資料連結
Picasso

No comments:

Post a Comment