Flex event 强引用与弱引用

flex中给组件加监听分为强引用和弱引用。
强引用不会自动释放,但可以保持监听存在,不会出现监听丢失情况!
可以再关闭页面的时候清空强引用的监听。但如果王了清空就会内存泄露!!
弱引用是不经过垃圾回收机制,过一段时间自己释放掉监听。但这样可能会出问题,万一用一段时间了,监听丢失了,系统就不能继续走了!
如果我们使用强引用(默认情况),FLASH的垃圾回收不会释放这个引用实例,尽管你把这个对象置为null或是其它,除非你手动去执行
removeListener()方法,这里还有一个方法就是在添加事件时候使用弱引用。 
一般情况我们在添加一个事件的时候,比如给一个按钮添加一个onclick事件,
我们的写法是: button.addEventListener(Event.click,onclick);这种时候是强引用,
因为addEventListener还有几个默认的参数useCapture=false,priority=0;useWeakReference=false , 
因此添加一个弱引用的方法是: yourobject.addEventListener(Type, function, false, 0, true); 

什么情况应该使用强引用,什么情况不应该使用呢?
当一些变量是成员变量(比如界面上不需要删除的BUTTON),
这种它的生命周期和listener是一样的(意思是中间不用动态删除在重复产生)这种情况我们不用考虑弱引用; 
当一些对象是不稳定的,动态变化的,比如TIMER,flashplayer认为它是整个生命周期的,应该使用弱引用,
如果你使用强引用,这个timer对象将永远不会垃圾回收。
(注意) 所以我们使用timer时候一定要这么写:myTimer.addEventListener(TimerEvent.TIMER, onTimer, false, 0, true);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值