【问题标题】:memory leak with an app with many views具有许多视图的应用程序的内存泄漏
【发布时间】:2017-11-01 19:19:17
【问题描述】:

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

【问题讨论】:

    标签: gluon gluon-mobile


    【解决方案1】:

    正如您所提到的,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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多