樂在其中

          以JEE為主攻,以Flex為點(diǎn)綴,以Eclipse RCP為樂趣
          請(qǐng)?jiān)L問http://www.inframesh.org

          首頁 新隨筆 聯(lián)系 管理
            43 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

          Flex組件生命周期大概可以分為3步:

          1. Intiliazition
        1. Construction
        2. Construction是組件構(gòu)造階段,組件的構(gòu)造器不能有必須的參數(shù)。在構(gòu)造函數(shù)中可以添加事件監(jiān)聽器,初始化屬性。這個(gè)階段只做很少的事情。

        3. Configuration
        4. Configuration是組件的配置階段,組件的屬性,事件回調(diào)函數(shù),樣式和效果定義都在這個(gè)階段完成。你不應(yīng)該把這些任務(wù)推遲到Attachment和Initlization階段之后。

        5. Attachment
        6. Attachment階段是把該組件追加到顯示列表當(dāng)中,一個(gè)Flex組件會(huì)被一個(gè)Flex容器IContianer以addChild方法添加到顯示列表當(dāng)中。

        7. Initlization
        8. 在Initlization初始化階段,組件會(huì)執(zhí)行一次完整的invalidation/validation周期。這個(gè)階段做的工作流程是:

          • 發(fā)出preinitialize事件。
          • 執(zhí)行方法createChildren()
          • 發(fā)出initialize事件。
          • 行一次完整的invalidation/validation周期。
          • 發(fā)出creationComplete事件。
          2. Updating

          用戶可能會(huì)與組件產(chǎn)生交互,組件的位置大小可能改變,樣式可能被重新賦值,也可能獲得焦點(diǎn)或者被禁用等等。這些情況的發(fā)生都用影響到組件外觀的變化。所以組件需要重繪自身來響應(yīng)這些變化。

        9. Invalidation
        10. 如果一個(gè)組件的屬性改變,它可能就會(huì)標(biāo)記組件為失效狀態(tài)。

        11. Validation
        12. 一個(gè)組件被標(biāo)記失效后,會(huì)驗(yàn)證是否需要更新組件,如果需要會(huì)調(diào)用相關(guān)的方法來更新。組件有三個(gè)極其重要的方法來更新自己:

          • commitProperties()
          • measure()
          • updateDisplayList(unscaledWidth,unscaledHeight)

          除了這三個(gè)方法,還有一個(gè)重要的方法是styleChanged(styleName),當(dāng)某個(gè)樣式改變時(shí),styleChanged被調(diào)用,然后執(zhí)行Invalidation標(biāo)記組件。如果你有自定義一個(gè)組件,有一些法則必要得遵守:

          不要在子類中顯式調(diào)用commitProperties,measure和updateDisplayList這三個(gè)方法,你要做的是override,而不是call。如果你添加了新的樣式,同樣是要繼承styleChanged方法,加入自己的邏輯。

          3. Destruction
        13. Detachment
        14. 當(dāng)不需要這個(gè)組件時(shí),把它從顯示列表中移出。把組件從一個(gè)容器中移出再添加到另一個(gè)容器中比創(chuàng)建新的組件有更小的開銷。

        15. Garbage Collection
        16. 如果組件不再被引用時(shí),它就成為符合垃圾回收的對(duì)象了,所以垃圾回收的第一條準(zhǔn)則是不再有活動(dòng)的引用。
          更加值得注意的是第二條準(zhǔn)則,即不包含使用了強(qiáng)引用的事件監(jiān)聽器,Dictionary和Timer。
          所以盡量使用弱引用是多么重要,但是同樣,小心你的弱引用在不該回收的時(shí)刻被回收了。例如對(duì)函數(shù)中的臨時(shí)變量使用弱引用,你可能得不到你想要的異步結(jié)果。

          posted on 2009-07-05 19:28 suprasoft Inc,. 閱讀(880) 評(píng)論(0)  編輯  收藏 所屬分類: RIA/Flex

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          ©2005-2008 Suprasoft Inc., All right reserved.
          主站蜘蛛池模板: 广南县| 鄂尔多斯市| 北碚区| 法库县| 卢龙县| 龙川县| 左贡县| 临江市| 来宾市| 南丹县| 莱芜市| 云浮市| 盐源县| 博罗县| 兴山县| 崇阳县| 乐清市| 岫岩| 万州区| 肇源县| 阿克陶县| 凤翔县| 麻城市| 延庆县| 平昌县| 景宁| 上高县| 丘北县| 台中县| 当阳市| 昂仁县| 伊金霍洛旗| 台江县| 津南区| 林口县| 正蓝旗| 建德市| 灌南县| 奉化市| 鄂伦春自治旗| 丹寨县|