2012-01-22 82 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 }