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