Flex 生命週期階段



Flex 應用的生命週期

雖然您可以不瞭解應用程式的生命週期階段也能構建 Flex 應用程式,但瞭解其基本機制以及事件發生的順序仍然很有益。這將有助於您配置諸如在執行時載入其他 Flex 應用程式以及管理在執行時載入和解除安裝類庫和資源的過程之類的功能。

充分理解 Flex 應用程式的生命週期將使您能夠構建更好的應用程式並對其進行最佳化,因為您將知道在何處最佳地執行程式碼。例如,如果您需要確保某些程式碼在預載入器期間執行,則需要知道將該事件的程式碼放在何處。

Life Cycle Events

當我們在瀏覽器中載入 Flex 應用程式時,在 Flex 應用程式的生命週期中會發生以下事件。

以下是關於不同 Flex 生命週期事件的簡要說明。

序號 事件及描述
1

preInitialize: mx.core.UIComponent.preinitialize

事件型別:mx.events.FlexEvent.PREINITIALIZE

此事件在元件初始化序列開始時排程。排程此事件時,元件處於非常原始的狀態。許多元件(例如 Button 控制元件)會建立內部子元件來實現功能。例如,Button 控制元件建立內部 UI TextField 元件來表示其標籤文字。

當 Flex 排程 pre-initialize 事件時,元件的子元件(包括所有內部子元件)尚未建立。

2

initialize: mx.core.UIComponent.initialize

事件型別:mx.events.FlexEvent.INITIALIZE

此事件在 pre-initialize 階段之後排程。Flex 框架在此階段初始化此元件的內部結構。當元件新增到父元件時,此事件會自動觸發。

通常您不需要呼叫 initialize()。

3

creationComplete: mx.core.UIComponent.creationComplete

事件型別:mx.events.FlexEvent.CREATION_COMPLETE

當元件完成其構建、屬性處理、測量、佈局和繪製時,排程此事件。

此時,根據其 visible 屬性,即使元件已繪製,它也可能不可見。

4

applicationComplete: spark.components.Application.applicationComplete

事件型別:mx.events.FlexEvent.APPLICATION_COMPLETE

在應用程式初始化、由 LayoutManager 處理並附加到顯示列表後排程。

這是應用程式建立生命週期的最後一個事件,表示應用程式已完全載入。

Flex 生命週期示例

讓我們按照以下步驟來了解透過建立一個測試應用程式來理解 Flex 應用程式的測試生命週期:

步驟 描述
1 建立一個名為 HelloWorld 的專案,其包名為 com.tutorialspoint.client,如Flex - 建立應用章節中所述。
2 修改HelloWorld.mxml,如下所述。保持其餘檔案不變。
3 編譯並執行應用程式,以確保業務邏輯按要求工作。

以下是修改後的 mxml 檔案 src/com.tutorialspoint/HelloWorld.mxml 的內容。

<?xml version = "1.0" encoding = "utf-8"?>
<s:Application xmlns:fx = "http://ns.adobe.com/mxml/2009"
   xmlns:s = "library://ns.adobe.com/flex/spark"
   xmlns:mx = "library://ns.adobe.com/flex/mx"
   width = "100%" height = "100%" minWidth = "500" minHeight = "500"
   initialize = "reportEvent(event)"
   preinitialize = "reportEvent(event)"
   creationComplete = "reportEvent(event)"
   applicationComplete = "reportEvent(event)">	
   
   <fx:Style source = "/com/tutorialspoint/client/Style.css" />
   <fx:Script>
      <![CDATA[
         import mx.controls.Alert;
         import mx.events.FlexEvent;
   
         [Bindable]
         private var report:String = "";

         private function reportEvent(event:FlexEvent):void {
            report += "\n" + (event.type + " event occured at: " 
            + getTimer() + " ms" + "\n");
         }
      ]]>
   </fx:Script>
   
   <s:BorderContainer width = "500" height = "500" id = "mainContainer" 
      styleName = "container">
      <s:VGroup width = "100%" height = "100%" gap = "50" 
         horizontalAlign = "center" verticalAlign = "middle">
         <s:Label textAlign = "center" width="100%" id = "lblHeader"
         fontSize = "40" color = "0x777777" styleName = "heading" 
         text = "Life Cycle Events Demonstration" />
         <s:TextArea id = "reportText" text = "{report}" editable = "false" 
         width = "300" height = "200">				
         </s:TextArea>			
      </s:VGroup>	
   </s:BorderContainer>	
</s:Application>

完成所有更改後,讓我們像在Flex - 建立應用章節中所做的那樣,以普通模式編譯並執行應用程式。如果您的應用程式一切正常,它將產生以下結果:[ 線上試用 ]

Flex Application Life Cycle
廣告