我有一个框架布局,我用它来交换片段。我使用导航抽屉,每个菜单项打开一个片段。所以可以肯定的是,在所有应用程序周期中,屏幕上只有同时只有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
也不会释放碎片。所以过了一会儿,如果我点击每个菜单项并反复打开片段,内存使用量会增加很多。
所以我的问题是如何释放旧的替换片段?我只想要一个在记忆中。或者我们可以说;我想要销毁它们
答案 0 :(得分:1)
在您的活动消失之前,对其片段的所有引用都将是 存在于记忆中。无论发生的添加/删除操作如何 片段管理器级别/后台。
通过this查看Martín Marconcini堆栈溢出答案。
如果它们存在于后台堆栈中,则可以隐藏并显示它们。 看看this。