内存泄露:TextInput/TextArea焦点问题

来源:互联网 发布:openstack源码 编辑:程序博客网 时间:2024/05/18 18:55

      前几天我们老大在查找内存泄露问题时,发现了在TextInput/TextArea获得焦点输入时,会导致TextInput/TextArea控件无法释放,当然同时会导致一系列的内存泄露问题(parent/parent.parent...无法释放)。后来查了下Adobe Flex的BUG单(Flex Bug and Issue Management System),发现这是Flex自身的问题(详见http://bugs.adobe.com/jira/browse/SDK-14781)。

      经过我们老大的详细查找,发现这个BUG的原因在于TextInput/TextArea在remove时,其focusManager的focusPane及focusPane的parent没有remove,从而导致这个问题。

      目前我们的解决方法是从TextInput/TextArea中继承一个子类出来,在这个类中重写focusOutHandler函数,并在这个函数中做相应的移除释放操作,具体的代码如下

 

      这样基本上就解决了我们的问题,不过这样我们需要将我们工程用到的TextInput/TextArea相换成相应的子类控件。呵呵,工程有点大~~寻找更好的解决方案中,希望Adobe能尽早解决这个实在太BT的BUG.