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);