FragmentTransaction,Frame Container,Freeing Fragments和Memory Management

时间:2016-01-15 20:26:36

标签: android android-fragments memory-management

我有一个框架布局,我用它来交换片段。我使用导航抽屉,每个菜单项打开一个片段。所以可以肯定的是,在所有应用程序周期中,屏幕上只有同时只有1个片段(因此有1个活动)。您可以在下面找到我的片段启动方法

 public void startFragment(Fragment f)
{
    FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
    transaction.replace(R.id.fragment_container, f);
    transaction.commit();


}

因此,当我在Android Studio上查看时,每次使用上述方法替换片段时,内存使用量增加FragmentTransaction.remove不会释放碎片,replace也不会释放碎片。所以过了一会儿,如果我点击每个菜单项并反复打开片段,内存使用量会增加很多。

所以我的问题是如何释放旧的替换片段?我只想要一个在记忆中。或者我们可以说;我想要销毁它们

1 个答案:

答案 0 :(得分:1)

  

在您的活动消失之前,对其片段的所有引用都将是   存在于记忆中。无论发生的添加/删除操作如何   片段管理器级别/后台。

通过this查看Martín Marconcini堆栈溢出答案。

如果它们存在于后台堆栈中,则可以隐藏并显示它们。 看看this