技术开发 频道

针对移动网络设备移植和优化Adobe AIR应用2

  【IT168 技术】基于AIR的RIA示例

  下面是使用Flash和AIR创建的商业应用程序的一些例子:

  •  AOL® Top 100 Videos

  AOL Top 100 Videos这个小部件的功能是提供扩展视频、上下文内容和集成式广告。扩展的视频内容包括相关艺术家的视频和花絮。

  • eBay® Desktop

  eBay Desktop是一个功能全面的可下载富Internet应用程序,独立于浏览器使用,它允许用户搜索商品和卖家,观看商品拍卖,参与竞价,设置提醒,查看警告以及很多其他的功能。

  • FinetuneSM Desktop

  这是一个界面优美的应用程序,允许用户访问Finetune在线音乐服务,并通过关联他们已经知道的艺术家和访问其他用户的播放列表,发现新的音乐和音乐家。

  • First Tracks™

  这个应用程序可以帮助单板和双板滑雪爱好者找到美国境内条件最好的滑雪地点。First Tracks提供地点说明、驾驶路线、当前的天气和下雪情况报告等。

  要了解基于AIR的应用程序的更多例子和评论,请访问以下站点:

  · http://www.adobe.com/products/air

  · http://refreshingapps.com/showcase

  本白皮书对于MID、Moblin和基于AIR的应用程序的概述就到此为止,余下的内容将针对拥有Flash应用程序开发经验的开发人员,重点讲述性能优化和MID应用程序。

  AIR/FLEX中的性能优化

  随着RIA开发向更加复杂、图形元素更加丰富的解决方案演变,开发人员从项目的设计阶段到实现和部署阶段,都将会面临越来越多的性能权衡问题。简单的应用程序或游戏可能永远也不会有性能问题,但随着程序变得越来越高级,开发人员需要关心所有可用的优化技术。

  与用于功能强大的桌面系统与笔记本系统的应用程序相比,用于MID产品的应用程序开发人员还应该解决的问题有电源管理,显示屏较小,以及诸如存储器和处理器这类资源上存在的限制。因此对于这些应用程序,需要仔细考虑所有开发阶段上的资源和性能情况,这种需要甚至变得愈发重要。

  在本白皮书接下来的内容中,我们将讨论涉及开发和部署流程多个不同部分的Adobe AIR平台优化技术。下面是本文的两部分主要内容:

  · 白皮书第1部分:Flash事件队列和事件处理;呈现

  · 白皮书第2部分:ActionScript 3代码执行;内存利用

  Flash事件队列:考虑与优化

  Adobe AIR提供给开发人员的好处之一,就是可以使用经过高度优化的、行业领先的Flash Player技术。开发人员可以通过Flex应用程序框架使用Flash Player的图形化工具,并利用ActionScript 3的面向对象功能。Flash Player的核心是它的事件队列,该队列中处理任务的方式对于应用程序行为有着显著影响。

  Flash事件队列中正在处理的应用程序,在用户面前可能会显示为停止不动,无法操作,甚至冻结状态。因此需要对应用程序的事件处理做一些优化,让用户了解系统行为,或许还能够中断行为以便能马上获得应用程序的控制权或响应。尽管此类优化不能真正提高应用程序的性能,但却改善了人对性能的感觉,用户因此能够获得较好的体验。

  事件队列概述

  在操作Flash播放器方面,Flex应用程序框架的核心是DisplayObject和DisplayObjectContainer的使用,而事件队列正是用于展示显示对象并对输入做出响应的机制。一旦将一个DisplayObjectContainer放到舞台上,或者说是放到Flash播放器窗口中,那么它就会开始显示它的子对象,并响应不断出现的用户事件。

  因为在AIR中,Flex应用程序的核心现在是由Flash播放器控制的,了解Flash播放器如何呈现舞台,以及它如何调用开发人员的代码(称为用户代码)来响应定时、系统和用户事件,就变得很重要。这种机制泛称为Flash事件队列,了解Flash如何调用用户代码和响应舞台中的事件,可以帮助开发人员克服或避免性能问题。

  事件循环处理

  Flash播放器设计用于在特定代理的事件循环上运行。循环的最小时间间隔是5到20毫秒,并会根据舞台总体设置、用户代码和呈现时间而变大。结束一次事件循环所需的时间还将受到代码编译方式(即编译器标志设置)和处理器和/或图形速度的影响。舞台的帧率用于指示Flash 播放器访问事件池,然后根据它遇到的事件类型来调用适当用户代码的频率。

  图1显示了ActionScript 虚拟机(AVM2)处理Flash事件的顺序。

  图1:Flash 时间循环处理

  如图1所示,Flash 播放器事件循环的第一个部分是用户操作。包括定时器事件、URLoader事件、点击按钮和Event.enterFrame事件在内的播放器事件都属于这一类别。在响应这些类别的事件的过程中,所有用户代码都将在Flex程序中执行,而且在这些事件的处理程序中,开发人员必须注意保证为了响应特定事件而调用的代码快速运行,并将执行结果返回给Flash 播放器。这允许播放器完成帧并进行呈现,从而让用户体验变得流畅且响应及时。

  Flash事件循环的下一部分是无效操作。无效操作是应该建立显示对象的地方。就在帧最后的呈现操作阶段之前,将会调用响应Event.render事件的用户代码,因此称为“呈现前事件”。

  Flash事件队列的最后一个阶段是呈现操作。在这个阶段中,播放器会遍历舞台上包含显示对象的列表,并把它们呈现到显示器上。

0
相关文章