記憶體優化策略
引言
首頁功能完成後在使用的時候偶爾會崩潰,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,總覺得還差了點什麼,先標記這些以後再繼續
相關文章
- UIImage 記憶體優化UI記憶體優化
- PHP記憶體優化PHP記憶體優化
- 記憶體優化技巧記憶體優化
- Android效能優化篇之記憶體優化--記憶體洩漏Android優化記憶體
- 關於redis記憶體分析,記憶體優化Redis記憶體優化
- Android效能優化 - 記憶體優化Android優化記憶體
- 記憶體優化相關記憶體優化
- Android記憶體優化Android記憶體優化
- Python 記憶體優化Python記憶體優化
- Android 記憶體優化Android記憶體優化
- app 的記憶體優化APP記憶體優化
- 1.記憶體優化(一)記憶體洩漏記憶體優化
- Android記憶體優化之記憶體快取Android記憶體優化快取
- 實踐App記憶體優化:如何有序地做記憶體分析與優化APP記憶體優化
- Android 效能優化之記憶體優化Android優化記憶體
- 【Redis記憶體策略】Redis記憶體
- Android記憶體優化(一):Java記憶體區域Android記憶體優化Java
- Android 效能優化之記憶體洩漏檢測以及記憶體優化(上)Android優化記憶體
- Android 效能優化之記憶體洩漏檢測以及記憶體優化(下)Android優化記憶體
- Android 效能優化之記憶體洩漏檢測以及記憶體優化(中)Android優化記憶體
- 垃圾收集器與記憶體分配策略_記憶體分配策略記憶體
- iOS圖片記憶體優化iOS記憶體優化
- App記憶體優化-實踐APP記憶體優化
- Android Note - 記憶體優化Android記憶體優化
- Redis-記憶體優化(一)Redis記憶體優化
- JNI記憶體管理及優化記憶體優化
- android 記憶體優化篇Android記憶體優化
- hugepages優化記憶體原理與優點優化記憶體
- Android記憶體優化之圖片優化Android記憶體優化
- WWDC筆記-記憶體策略筆記記憶體
- JVM記憶體-GC策略JVM記憶體GC
- Java 記憶體分配策略Java記憶體
- win10怎麼優化記憶體 win10系統記憶體優化的方法Win10優化記憶體
- 效能優化技巧知識梳理(2) 記憶體優化優化記憶體
- Android APP 記憶體優化之圖片優化AndroidAPP記憶體優化
- 2.記憶體優化(二)優化分析記憶體優化
- 淺談Android記憶體優化Android記憶體優化
- MongoDB記憶體使用分析和優化MongoDB記憶體優化