Android 開發中處理高解析度圖片是 OOM (OutOfMemoryError) 的高發區。面試常考、實戰必會,以下六大策略構建完整防禦體系:
WeakReference<Bitmap> 讓 GC 在記憶體緊張時可回收圖片物件。LruCache 存近期圖片,磁碟層用 DiskLruCache 持久化,大幅提升命中率與記憶體利用率。ImageView 實際顯示大小計算 inSampleSize,避免載入超大原圖。BitmapFactory.Options.inPreferredConfig = RGB_565,將每像素從 4 Bytes 降為 2 Bytes,記憶體減半,視覺差異極小。BinderInternal.forceGc(),僅在極端情況下使用,慎防副作用。android:process 元件,主進程記憶體不受影響。「圖片 OOM 本質上是『高效使用有限記憶體』與『申請更多記憶體』的博弈。沒有銀彈,只有組合拳。」
實務上建議優先落實 2、3、4 點,配合成熟圖片載入庫 (Glide、Picasso、Coil) 內建最佳實踐,即可解決 95% 以上場景。