内存泄漏与具有许多视图的应用程序

时间:2017-10-31 20:31:12

标签: gluon gluon-mobile

我的应用程序有很多视图,每个视图上都有几个消耗内存的图像和图标;当我打开视图时,使用的内存增加了内存泄漏。我注意到视图已正确缓存,但在这种情况下,我想限制缓存并从缓存中删除视图,我该怎么办?

1 个答案:

答案 0 :(得分:0)

正如您所提到的,Gluon视图已正确缓存。

为此,每当您使用以下内容添加View

MobileApplication.getInstance().addViewFactory(MY_VIEW, () -> new View(new Label("Hi")));

Gluon Mobile框架在内部为您管理视图和图层的缓存。

每当需要视图时,都会创建并缓存它。下次需要时,它将从缓存中检索(如果存在),或者再次创建。

当设备中的内存不足时,可以自动从缓存中删除现有视图。

但是如果你想手动完成,Gluon MobileApplication类实际上包含了一个方法来unregister来自视图工厂的视图:

MobileApplication.getInstance().removeViewFactory(MY_VIEW);

请注意,这将删除实例和工厂本身,因此下次需要时,您必须再次将其添加到工厂。

为此您可以使用:

if (! MobileApplication.getInstance().isViewPresent(MY_VIEW)) {
    MobileApplication.getInstance().addViewFactory(MY_VIEW, () -> new View(new Label("Hi")));
    MobileApplication.getInstance().switchView(MY_VIEW);
}