困擾我多次的記憶體溢位問題終於解決了
阿新 • • 發佈:2019-01-05
viewpager+fragment +多圖 簡直要命,滑動到第10個fragment左右就會記憶體溢位
說是記憶體溢位,其實是記憶體洩漏。圖片載入開源庫有很多,我用的是Glide,Glide會回收圖片釋放記憶體,然而如果該圖片一直被imageview保持引用就會出現無法回收的狀態,最終這些圖片越來越多,導致記憶體溢位。
然後要解決的問題就是在適當的時間釋放掉這些引用。
這裡viewpager和fragment配合使用,當然是以fragment為一個單位,那麼在fragment的onDestroyView釋放引用。程式碼如下
出處為http://stackoverflow.com/questions/16409020/fragmentstatepageradapter-outofmemoryerrorprivate void unbindDrawables(View view) { if (view.getBackground() != null) { view.getBackground().setCallback(null); } if (view instanceof ViewGroup && !(view instanceof AdapterView)) { for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) { unbindDrawables(((ViewGroup) view).getChildAt(i)); } ((ViewGroup) view).removeAllViews(); } }
viewpager配合FragmentStatePagerAdapter使用