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