我知道Action Script不提供多线程,因此在编写flex应用程序时,我们只能在一个线程上工作。这对于渲染我的UI是好的。
然而,当喜欢flex而不是silverlight时会出现一些问题:
答案 0 :(得分:3)
但是假设对于像Flex这样的操作的Aync httpservice是公平的,在内部它会使用一些工作线程来管理异步操作然后回到主线程
没有。 响应数据的处理发生在与更新UI相同的线程中。例如,如果在一次调用中返回5,000个AMF对象,则Flash Player将在线程上反序列化这些对象,这将导致UI冻结。
在内部,浏览器可能正在使用线程来管理来自结束URL的响应加载。但是,一旦返回响应,并从浏览器切换到Flash播放器插件,则在主线程上发生该数据的反序列化和处理。
flex / flash播放器可以并行处理多个httpservice调用吗? (例如,UI的多个部分同时加载数据。)
是。 此处的限制是从浏览器强制执行的,即浏览器的最大并发HTTP请求数。这在浏览器到浏览器之间有所不同,但一般来说,将多个请求发送到后端服务是很好的(并鼓励)。
值得熟悉AsyncToken
,这是处理并发调用时使用的Flex主类,确保请求和响应匹配在一起。
请注意,Flex中用于与远程服务通信的大多数类(例如,HttpService
和RemoteObject
)都会公开concurrency
属性,该属性定义对象应如何反应多个并发请求。 (允许开发人员明确允许或禁止)。
动画内容如何(例如并行动画) - flash播放器内部是否利用一些线程来加速图形,还是在UI线程上完成?
这不是我的专业领域,有人可能会纠正我。但是,我相信Flex会通过生成一系列KeyFrame来创建动画,这些KeyFrame会随着时间的推移更改UIComponent上的值的属性,然后执行它们。 (执行发生在与其他所有相同的线程中)。 因此,通过聚合关键帧的目标并一起执行它们来生成Parallal动画。
例如:Keyframe n at ms300 = { UIComponent1.x = 300; UIComponent2.y = 300 }