1. 程式人生 > >困擾我多次的記憶體溢位問題終於解決了

困擾我多次的記憶體溢位問題終於解決了

viewpager+fragment +多圖 簡直要命,滑動到第10個fragment左右就會記憶體溢位

說是記憶體溢位,其實是記憶體洩漏。圖片載入開源庫有很多,我用的是Glide,Glide會回收圖片釋放記憶體,然而如果該圖片一直被imageview保持引用就會出現無法回收的狀態,最終這些圖片越來越多,導致記憶體溢位。

然後要解決的問題就是在適當的時間釋放掉這些引用。

這裡viewpager和fragment配合使用,當然是以fragment為一個單位,那麼在fragment的onDestroyView釋放引用。程式碼如下

private 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();
        }
}
出處為http://stackoverflow.com/questions/16409020/fragmentstatepageradapter-outofmemoryerror

viewpager配合FragmentStatePagerAdapter使用