我有一个带有复杂UI的大型应用程序(内置于Flex 3.6)。有很多嵌套组件,其中大多数都有事件监听器或绑定设置器。结构类似于:
- Client View
- Portfolio View
- Personal data
- etc. etc.
- Manager view
- etc. etc.
有时我会破坏客户端视图以重新初始化它;我做的是将它从容器中取出;但似乎内存没有得到正确的垃圾收集(问题是存在事件监听器和数据绑定)。
阅读书籍和论坛我发现管理这种情况的最佳方法是删除对象销毁时的数据绑定和事件监听器。但我怎么能这样做?谁告诉客户端视图层次结构的最后一个子节点已被删除?
我通过“addedToStage”和“removedFromStage”事件处理程序实现了它 - 它似乎有效,但它是一种解决方法;这个事件会被调用很多时间,这会减慢渲染速度。
所以我的问题是:我认为这个问题很常见,有更好的解决方案吗?
答案 0 :(得分:0)
为什么您认为根据舞台上的外观处置和重新激活组件是一种解决方法?这样做非常普遍,我个人认为没有特别的理由不这样做。
虽然我只处理移动项目,但这基本上与我处理组件的停用和重新激活的方法完全相同。从阶段中删除后,所有事件处理程序将被删除,并在组件再次添加后再次添加。 除此之外,我还有一个完全处理组件的附加方法,因此首先删除事件侦听器,删除对该对象的任何引用,最后使其为空。