加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex event 强引用与弱引用

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读