碎片泄漏记忆

时间:2018-04-24 10:38:00

标签: java android android-fragments memory-management memory-leaks

我目前正在使用片段开发Android应用程序,我遇到内存泄漏,迫使我的应用程序在一段时间后关闭。

该应用程序的主要活动使用一个可以在其间滑动的viewpager并排显示3个片段。中间片段包含我们商店的目录。

当用户单击目录中的某个类别时,会加载一个包含更多选项的新片段;该类别中的品牌。然后,用户可以单击其中一个品牌以查看其中的产品。然后,用户可以单击某个产品并在整个屏幕上查看更多详细信息。

每次用户点击这些按钮时,都会创建一个新片段,显示他们点击了哪个按钮的内容。

片段是这样的:

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();

当用户点击后退按钮时,它们将被定向到上一个片段。这就是我想要发生的事情,但它似乎是在创建一个全新的片段而不是使用旧片段。

在观看我们的一些大品牌时,这会造成巨大的内存泄漏。

enter image description here

当用户按下后退按钮时,它们所在的当前片段应该被销毁,但它们似乎仍然存在。

我在这里找到了答案: https://stackoverflow.com/a/20023140/9364403

但是,答案建议使用.add()函数,因为我目前正在使用.replace()函数。这些有什么区别?

我还试图彻底清除背斜,但这似乎并没有清除记忆。

Android Profiler工具(如图所示)显示正在使用的内存最多的是Java。这实际上是与片段有关,还是我的应用程序还有其他问题?

感谢。

0 个答案:

没有答案