【问题标题】:Getting memory leaks from Appcelerator Alloy app从 Appcelerator Alloy 应用程序获取内存泄漏
【发布时间】:2017-06-03 21:42:06
【问题描述】:

我有一个 Alloy 应用程序。它有7个窗口并同时打开。当用户关闭打开的窗口$.removeListener(); $.destroy(); 代码在窗口关闭事件中运行。但我在 Android 设备上遇到内存泄漏。 %90 个窗口有 ListView,每个窗口最多有 2 个 Listview。多窗口的正确方法是什么?

【问题讨论】:

    标签: appcelerator titanium-mobile appcelerator-titanium


    【解决方案1】:

    首先,当用户一次只能看到最多 1 个窗口时,为什么要同时打开 7 个窗口。

    这很简单,只打开用户应该首先看到的那个窗口,并在前一个窗口中创建一个指向其他窗口的链接流。

    您能想到 Play 商店中的任何应用程序,如果您有,请将其链接发送给我,我真的很想查看它吗?

    但是,如果您的意思是说用户将在滚动行为或类似分页的情况下同时看到所有窗口,那么请转到 Ti.UI.TabGroup

    【讨论】:

    • 想想 ajax 浏览器导航。我怎样才能用 appcelerator 做到这一点。
    • 我有一个窗口的物理文件。当用户将参数传递给该窗口时,内容正在发生变化。除了这个文件,我还有 4 个物理文件。
    • 这是一种您可以使用的样式,正如@Prashant Saini 在上面的另一条评论中提到的那样。每个合金控制器都可以使用 作为其基础而不是 ,然后您可以根据需要添加和删除基础视图等。
    • @Prashant Saini 感谢您的建议。我在alloy.js 中为链接流创建了2 个数组。一个数组用于 windows,另一个数组是 windows args。当用户想要打开新窗口时,当前窗口正在关闭。当用户想要返回时,关闭的窗口会使用数组再次打开。
    【解决方案2】:

    您是否 100% 确定您的事件侦听器已被删除?

    不知道$.removeListener();这个函数是自定义函数吗?

    作为一般规则,我尝试将尽可能多的事件侦听器放入 xml,因为它们会自动删除,并有一个自定义函数 destroyMe() 运行 onClose 删除我可能使用过的任何其他侦听器和 @ 987654323@

    Ti.App.addEventListener 也是一个杀手,如果你使用它们,请确保将它们删除!

    ps:我完全理解 7 个窗口位 :-)

    【讨论】:

    • 你能告诉我为什么他需要同时打开 7 个窗口吗?
    • 例如在 iOS 上使用 7 个窗口深度的 NavigationWindow。 Android 没有此组件,因此替代方法是为每个步骤打开新窗口并保持它们在后面打开。我可能完全误解了这个应用程序:-)
    • 但是为什么你需要让它们在后面打开呢?为了什么? NavigationWindow 只是一个组织窗口的框,但它仍然一次显示一个窗口。正如这个问题的用户所说,它同时打开 7 个窗口,这就是我想要理解的。 :D
    • @Prashant Saini 和 Martyn Joyce 感谢您的关注。每个窗口都有自己的参数,它们通过用户导航打开。由于它是动态参数,我无法关闭父窗口。你有什么想法吗?
    • @Kerberos,您能否向我们提供您想要的视觉提示,因为我很难理解您的需求? :)
    猜你喜欢
    • 1970-01-01
    • 2016-03-28
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    相关资源
    最近更新 更多