在 Android 應用程式載入點陣圖可能很造成麻煩的原因有幾種:
- 點陣圖非常容易用光應用程式的記憶體預算。舉例來說,Pixel 手機的相機最高可拍攝 4048x3036 像素 (1200 萬像素)。如果點陣圖使用的設定是
ARGB_8888,那麼 Android 2.3 (API 級別 9) 以上版本用預設值在記憶體載入單一相片時需要消耗大約 48MB 的記憶體 (4048*3036*4 位元組)。這種龐大的記憶體需求可能會馬上用完應用程式可以使用的所有記憶體。 - 在 UI 執行緒載入點陣圖可能會降級應用程式的效能,導致回應緩慢,或甚至出現 ANR 訊息。因此,當使用點陣圖的時候,必須適當管理執行緒。
- 如果應用程式在記憶體裡面載入多個點陣圖,您需要特別注意管理記憶體和磁碟快取。否則應用程式的 UI 回應度和順暢度就可能受到影響。
在大多數情況下,建議您使用 Glide 程式庫在應用程式中擷取、解碼,並顯示點陣圖。Glide 在處理上述作業,以及其他在 Android 中使用點陣圖和其他圖片的相關任務時,大多能將複雜之處化繁為簡。如要瞭解如何使用和下載 Glide,請造訪 GitHub 的 Glide 存放區。
您也可以選擇直接使用 Android 架構內建較低級別的 API。如要進一步瞭解如何操作,請參閱「有效率地載入大型點陣圖」、「快取點陣圖」和「管理點陣圖記憶體」。