首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android ImageView大量圖片導致OOM:內存優化三板斧

     編輯:程式設計疑難解答

問題現象

每個界面佈局大量使用高分辨率圖片作背景,切換幾次 Activity 後拋出 OutOfMemoryError。

核心優化策略

  1. 圖片壓縮加載:使用 BitmapFactory.Options.inSampleSize 按需縮放,避免將原圖完整解碼進內存。
    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
  2. 引入圖片加載框架:Glide / Picasso / Coil 自動處理緩存、生命週期、線程池、內存複用(BitmapPool),一行代碼解決 90% 場景。
    Glide.with(this).load(url).into(imageView);
  3. 佈局優化:
    • 背景圖改用 android:windowBackground 主題屬性,避免每個 View 持有 Bitmap。
    • 列表/網格使用 RecyclerView 配合 Glide,利用 View 復用機制。
    • 及時釋放:onDestroy() 中 Glide.with(this).clear(view); 或設置 android:largeHeap="true"(治標不治本)。

參考資源

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved