Android-Fragment 切換造成記憶體溢位,導致記憶體增長

晴天5273發表於2018-04-04

    當在Activity裡面有多個fragment的時候,來回切換fragment,會造成記憶體使用一直在增加。

    由於fragment在呼叫remove之後,裡面的view的引用導致記憶體回收不了,造成記憶體洩露,所以不斷的new Fragment切換之後,記憶體使用一直在增加。

    解決辦法:

            在BaseFragment類裡面的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();
        }
    }

例如:

 @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbindDrawables(getView());
    }
如有錯誤,請指正。

相關文章