記憶體優化策略
引言
首頁功能完成後在使用的時候偶爾會崩潰,log一看oom了。
仔細想想現在的佈局結構確實會出現這樣的問題
只首頁這一個Fragment內的ViewPager就包含了21個子Fragment
其中每個子Fragment又包含了多個view每個view都有載入圖片,如何形容可怕呢?
單發現Fragment的直接子view就有100個,介面返回的。且子view可能是ViewGroup又包了view。
android profiler顯示記憶體超400M,圖片佔將近200M,記憶體優化亟待解決。
正文
先說一下原作:
之前有提到過首頁ViewPager設定了近10個快取(我只設定了3個),滑動內容時並沒有卡頓和oom,圖片的載入也很流暢。
有一個小細節引起了我的注意,當Fragment滑動到底部後在此滑到頂部時,圖片的載入效果是漸顯的。明顯做了手腳,先標記一下,至於是什麼暫時還沒搞懂。
優化
1、Fragment
onCreateView每次會inflate一個View出來,多Fragment來回切換時inflate會更多
if (rootView == null) {
rootView = inflater.inflate(R.layout.fragment_content, container, false)
}
在每個Fragment內會存在多圖,因此onDestroyView時清除記憶體佔用
Glide.get(context).clearMemory()
System.gc()
2、ViewPager
設定ViewPager的快取數量
viewPager.offscreenPageLimit=3
3、圖片格式
之前Glide操作的所有圖片為ARGB_8888此種格式一畫素會佔用32位4位元組。現在改為最小的RGB_565,這種格式佔16位2位元組,足足縮了一倍。
4、Glide
設定成只儲存,修改後的圖片
.diskCacheStrategy(DiskCacheStrategy.RESULT)
5、滑動時不載入圖片
給RecyclerView設定滑動監聽,當RecyclerView的狀態為SCROLL_STATE_IDLE時載入圖片
通過上述的操作圖片佔記憶體最高為130M且沒有oom,總覺得還差了點什麼,先標記這些以後再繼續
相關文章
- Android效能優化篇之記憶體優化--記憶體洩漏Android優化記憶體
- Android記憶體優化Android記憶體優化
- 關於redis記憶體分析,記憶體優化Redis記憶體優化
- Android 效能優化之記憶體優化Android優化記憶體
- 記憶體優化相關記憶體優化
- Android Note - 記憶體優化Android記憶體優化
- 1.記憶體優化(一)記憶體洩漏記憶體優化
- 實踐App記憶體優化:如何有序地做記憶體分析與優化APP記憶體優化
- Android記憶體優化之圖片優化Android記憶體優化
- 垃圾收集器與記憶體分配策略_記憶體分配策略記憶體
- JNI記憶體管理及優化記憶體優化
- mariadb 記憶體佔用優化記憶體優化
- iOS圖片記憶體優化iOS記憶體優化
- App記憶體優化-實踐APP記憶體優化
- 淺談Android記憶體優化Android記憶體優化
- Android記憶體優化全解析Android記憶體優化
- Redis-記憶體優化(一)Redis記憶體優化
- WWDC筆記-記憶體策略筆記記憶體
- JVM記憶體-GC策略JVM記憶體GC
- win10怎麼優化記憶體 win10系統記憶體優化的方法Win10優化記憶體
- 2.記憶體優化(二)優化分析記憶體優化
- Redis 記憶體優化神技,小記憶體儲存大資料Redis記憶體優化大資料
- iOS 使用Instruments優化記憶體效能iOS優化記憶體
- Linux 效能優化之 記憶體 篇Linux優化記憶體
- MongoDB記憶體使用分析和優化MongoDB記憶體優化
- HBase記憶體配置及JVM優化記憶體JVM優化
- win10虛擬記憶體如何優化_win10怎麼優化虛擬記憶體Win10記憶體優化
- Redis的記憶體淘汰策略Redis記憶體
- 記憶體分配策略學習記憶體
- win10系統如何優化記憶體_win10優化記憶體佔用率怎麼操作Win10優化記憶體
- android效能評測與優化-記憶體Android優化記憶體
- [BASIS]SAP記憶體優化配置學習記憶體優化
- android記憶體管理機制與優化Android記憶體優化
- 讀書筆記2-記憶體優化篇筆記記憶體優化
- Android 是如何管理 App 記憶體的 — Android 記憶體優化第二彈AndroidAPP記憶體優化
- Android深度效能優化--記憶體優化(一篇就夠)Android優化記憶體
- 從記憶體洩露、記憶體溢位和堆外記憶體,JVM優化引數配置引數記憶體洩露記憶體溢位JVM優化
- JVM GC 與 記憶體分配策略JVMGC記憶體
- Spark效能優化:診斷記憶體的消耗Spark優化記憶體