Java 内存泄漏的片段
我目前正在开发一个使用片段的Android应用程序,我遇到了一个内存泄漏,迫使我的应用程序在一段时间后关闭 该应用程序的主要功能是使用一个可在两个页面之间滑动的viewpager,将3个片段并排显示。中间的部分是我们商店的目录 当用户单击目录中的一个类别时,一个新片段将加载更多选项;该类别中的品牌。然后,用户可以单击其中一个品牌来查看其中的产品。然后,用户可以单击产品并在全屏上查看更多详细信息 每次用户单击其中一个按钮时,都会创建一个新的片段,显示他们单击的按钮的内容 碎片是这样的:Java 内存泄漏的片段,java,android,android-fragments,memory-management,memory-leaks,Java,Android,Android Fragments,Memory Management,Memory Leaks,我目前正在开发一个使用片段的Android应用程序,我遇到了一个内存泄漏,迫使我的应用程序在一段时间后关闭 该应用程序的主要功能是使用一个可在两个页面之间滑动的viewpager,将3个片段并排显示。中间的部分是我们商店的目录 当用户单击目录中的一个类别时,一个新片段将加载更多选项;该类别中的品牌。然后,用户可以单击其中一个品牌来查看其中的产品。然后,用户可以单击产品并在全屏上查看更多详细信息 每次用户单击其中一个按钮时,都会创建一个新的片段,显示他们单击的按钮的内容 碎片是这样的: Catal
Catalog -> Brands -> All Products -> Indiviudal Product
要更改显示的片段,我使用以下代码:
Brands brandsFragment = new Brands();
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.catalogcontent, brandsFragment);
transaction.addToBackStack(null);
transaction.commit();
当用户单击back按钮时,他们将被定向到前面的片段。这就是我想要发生的,但是它似乎在创建一个全新的片段,而不是使用旧的片段
这在查看我们的一些较大品牌时会导致巨大的内存泄漏
当用户按下后退按钮时,他们所在的当前片段应该被销毁,但它们似乎一直存在
我在这里找到了答案:
但是,答案建议使用.add()函数,正如我目前使用的.replace()函数一样。这些有什么区别
我也尝试过彻底清除后盾,但这似乎并没有清除记忆
Android Profiler工具(如图所示)显示,使用最多的内存是Java。这实际上是与片段有关还是我的应用程序存在其他问题
谢谢