2012-01-22 24 views
0

我知道Action Script不提供多線程,所以在編寫flex應用程序時我們被限制在一個線程上工作。這對於呈現我的用戶界面是可以的。flex異步I/O操作在工作線程上?

  1. 作爲UI層單個線程是不夠好,但它公平的假設,對於Aync的HTTPService像柔性操作,內部會使用一些工人:

    然而,一些問題在Silverlight中更傾向於彎曲時,會出現線程來管理異步操作,然後回到主線程?它看起來像它一樣,因爲我的用戶界面不凍結。

  2. flex/flash播放器可以同時處理多個httpservice調用嗎? (例如,多個UI部分同時加載數據)。
  3. 動畫材料(例如並行動畫)如何?flash player在內部是否利用某些線程來加速圖形,還是全部在UI上完成線程?

回答

3

但它是公平的假設,對於Aync的HTTPService像柔性操作,內部會使用一些輔助線程來管理異步操作,然後回到主線程

無。 響應數據的處理與更新UI時發生在同一個線程中。例如,如果您在一次調用中返回5,000個AMF對象,則Flash Player將在線程上反序列化這些對象,這將導致UI凍結。

在內部,瀏覽器可能使用線程來管理從最終URL加載響應。但是,一旦響應被返回,並從瀏覽器切換到Flash播放器插件,就會在主線程中對該數據進行反序列化和處理。

flex/flash player可以同時處理多個httpservice調用嗎? (例如,多個UI部分同時加載數據)。

是的。 這裏的限制是從瀏覽器強制執行的,即瀏覽器併發HTTP請求的最大數量。這從瀏覽器到瀏覽器有所不同,但一般來說,發送多個請求到後端服務是可以的(也是鼓勵的)。

值得熟悉的是AsyncToken,這是Flex處理併發呼叫時使用的主要類,確保請求和響應匹配在一起。

要知道,大多數類Flex中被用於與遠程服務communciating(例如,HttpServiceRemoteObject)暴露concurrency屬性,它定義了對象應該如何創建多個併發請求作出反應。 (允許開發人員明確允許或禁止它)。

動畫的東西(例如並行動畫)如何?flash player在內部是否利用某些線程來加速圖形,還是全部在UI線程上完成?

這不是我的專業領域,有人可能會糾正我。不過,我相信Flex通過生成一系列KeyFrame來創建動畫,這些KeyFrame會隨着時間的推移更改UIComponent上的值的屬性,然後執行它們。 (執行與其他所有內容在同一個線程中)。 因此,Parallal動畫是通過聚合關鍵幀的目標並將它們一起執行來生成的。

例如:Keyframe n at ms300 = { UIComponent1.x = 300; UIComponent2.y = 300 }