flex组件的生命周期

Flex组件生命周期

1. Initlization

 

Construction

Construction是组件构造阶段,组件的构造器不能有必须的参数。在构造函数中可以添加事件监器,初始化属性。这个阶段只做很少的事情。

 

Configuration

Configuration是组件的配置阶段,组件的属性,事件回调函数,样式和效果定义都在这个阶段完成。你不应该把这些任务推迟到AttachmentInitlization阶段之后。

 

Attachment

Attachment阶段是把该组件追加到显示列表当中,一个Flex组件会被一个Flex容器IContianeraddChild方法添加到显示列表当中。

 

Initlization

Initlization初始化阶段,组件会执行一次完整的invalidation/validation周期。这个阶段做的工作流程是:

 

发出preinitialize事件。 

执行方法createChildren() 

发出initialize事件。 

行一次完整的invalidation/validation周期。 

发出creationComplete事件。  

 

2. Updating

 

用户可能会与组件产生交互,组件的位置大小可能改变,样式可能被重新赋值,也可能获得焦点或者被禁用等等。这些情况的发生都用影响到组件外观的变化。所以组件需要重绘自身来响应这些变化。

 

Invalidation

如果一个组件的属性改变,它可能就会标记组件为失效状态。

 

Validation

一个组件被标记失效后,会验证是否需要更新组件,如果需要会调用相关的方法来更新。组件有三个极其重要的方法来更新自己:

 

commitProperties() 

measure() 

updateDisplayList(unscaledWidth,unscaledHeight) 

除了这三个方法,还有一个重要的方法是styleChanged(styleName),当某个样式改变时,styleChanged被调用,然后执行Invalidation标记组件。如果你有自定义一个组件,有一些法则必要得遵守:

 

不要在子类中显式调用commitPropertiesmeasureupdateDisplayList这三个方法,你要做的是override,而不是call。如果你添加了新的样式,同样是要继承styleChanged方法,加入自己的逻辑。

 

3. Destruction

 

Detachment

当不需要这个组件时,把它从显示列表中移出。把组件从一个容器中移出再添加到另一个容器中比创建新的组件有更小的开销。

 

Garbage Collection

如果组件不再被引用时,它就成为符合垃圾回收的对象了,所以垃圾回收的第一条准则是不再有活动的引用。

更加值得注意的是第二条准则,即不包含使用了强引用的事件监器,DictionaryTimer

所以尽量使用弱引用是多么重要,但是同样,小心你的弱引用在不该回收的时刻被回收了。例如对函数中的临时变量使用弱引用,你可能得不到你想要的异步结果。

 

更多关于Flex组件的知识,可以查询天地会http://bbs.9ria.com/thread-75487-1-1.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值