移动应用程序设计注意事项

移动设备的操作上下文和物理特性要求仔细进行编码和设计。例如,必须要简化代码以实现尽可能最快的执行速度。当然,代码优化只能起到这么大的作用;在设备限制范围内发挥作用的智能设计还有助于防止可视演示使呈现系统负担过重。

代码

尽管使代码更快地运行始终是有用的,但是大多数移动设备的处理器速度较慢,所以就更值得花费一些时间编写精简代码。此外,移动设备几乎总是使用电池电量运行。如果用较少的工作量达到相同的效果,则会使用较少的电池电量。

设计

在设计应用程序的用户体验时,必须考虑小屏幕尺寸、触屏交互模式甚至不断变化的移动用户环境等因素。

代码和设计一起

如果您的应用程序使用动画,则呈现优化非常重要。但是,只有代码优化通常是不够的。在设计应用程序可视效果方面,必须让代码可以将它们有效地呈现出来。

重要的优化技术将在 优化 Flash Platform 的内容 指南中进行讨论。该指南中讨论的技术适用于所有 Flash 和 AIR 内容,但是对于开发在移动设备上运行良好的应用程序而言是至关重要的。

应用程序生命周期

当您的应用程序针对其他应用程序丢失焦点时,AIR 会将帧速率降到每秒 4 帧并停止呈现图形。在这种帧速率下,流网络和套接字连接将会中断。如果您的应用程序不使用此类连接,则可以将帧速率调节为甚至更低的值。

在适当的情况下,您应该停止音频播放并删除针对 Geolocation 和 Accelerometer 传感器的侦听器。AIR NativeApplication 对象会调度激活和停用事件。使用这些事件可以管理在活动与背景状态之间的转换。

大多数移动操作系统在终止背景应用程序时都没有警告。通过经常保存应用程序状态,您的应用程序应能够将自己恢复到合理的状态,不论是从背景返回到活动状态还是通过重新启动。

信息密度

移动设备屏幕的实际大小小于台式机,但像素密度(每英寸像素数)却更高。相同字体大小生成的字母在移动设备屏幕上显示的实际上要比在台式机上小。通常必须使用较大的字体才能确保可读性。一般而言,14 磅是易于阅读的最小字体大小。

通常在活动时以及照明条件很差的情况下使用移动设备。应考虑您实际可以在屏幕上清晰显示多少信息。它可能比您在具有相同像素尺寸的台式机屏幕上显示的内容要少。

同时考虑用户在触摸屏幕时,他们的手指和手会挡住部分显示区。如果用户需要较长时间地触摸某些交互元素,请将这些元素置于屏幕的两侧和底部。

文本输入

许多设备使用虚拟键盘进行文本输入。虚拟键盘会隐藏部分屏幕,并且通常使用起来十分麻烦。避免依赖键盘事件(软键除外)。

考虑实现替代方法以使用输入文本字段。例如,要让用户输入数值,您不需要文本字段。您可以提供两个按钮来增加或减小此值。

软键

移动设备包括数目可变的软键。软键是可通过编程方式具有不同功能的按钮。在您的应用程序中遵守关于这些键的平台惯例。

屏幕方向更改

可以纵向或横向查看移动内容。考虑您的应用程序如何处理屏幕方向更改。有关详细信息,请参阅 舞台方向

屏幕变暗

在播放视频时,AIR 不会自动阻止屏幕变暗。您可以使用 AIR NativeApplication 对象的 systemIdleMode 属性来控制设备是否将进入省电模式。(在某些平台上,必须请求适当的权限才能使此功能起作用。)

来电呼叫

用户打电话或接听电话时,AIR 运行时会自动将音频调节到静音。在 Android 上,如果您的应用程序在背景中时播放音频,则应该在应用程序描述符中设置 Android READ_PHONE_STATE 权限。否则,Android 会防止运行时检测电话并自动将音频调节到静音。请参阅 Android 权限

感应区目标

在设计按钮和用户点击的其他用户界面元素时,需要考虑感应区目标的大小。这些元素要足够大,以便在触摸屏上使用一个手指即可激活。此外,还要确保目标之间具有足够的空间。在典型的高分辨率电话屏幕上,感应区目标区域应约为每一侧 44 像素到 57 像素。

应用程序包安装大小

移动设备用于安装应用程序和存储数据的空间通常远远小于台式机。通过删除不使用的资源和库可将应用程序包大小降至最低。

在 Android 上,安装应用程序时不会将应用程序包提取到单独的文件中。相反,在访问资源时会将这些资源解压缩到临时存储中。若要将此解压缩的资源存储占用的空间降至最低,请在资源完全加载后关闭文件和 URL 流。

文件系统访问

不同的移动操作系统会施加不同的文件系统限制,而且这些限制通常与由桌面操作系统施加的限制有所不同。因此,平台不同,用于保存文件和数据的适当位置也可能各不相同。

文件系统之间存在差异所产生的一个结果是,AIR File 类所提供的常用目录的快捷方式不一定总是可用。下表列出了可在 Android 和 iOS 上使用的快捷方式:

Android

iOS

File.applicationDirectory

通过 URL 只读(非本机路径)

只读

File.applicationStorageDirectory

可用

可用

File.cacheDirectory

可用

可用

File.desktopDirectory

SDCard 的根目录

不可用

File.documentsDirectory

SDCard 的根目录

可用

File.userDirectory

SDCard 的根目录

不可用

File.createTempDirectory()

可用

可用

File.createTempFile()

可用

可用

Apple 关于 iOS 应用程序的准则针对不同情况下文件应存储的位置提供特定的规则。例如,其中一个准则是,只有包含用户输入数据的文件或包含不能重新生成或重新下载的数据的文件才应存储在为远程备份指定的目录中。有关如何遵循 Apple 文件备份和缓存准则的信息,请参阅 控制文件备份和缓存

UI 组件

Adobe 已开发 Flex 框架的移动优化版本。有关详细信息,请参阅 使用 Flex 和 Flash Builder 开发移动应用程序

同时还提供适用于移动应用程序的社区组件项目。这些项目包括:

Stage 3D 加速图形渲染

从 AIR 3.2 开始,用于移动设备的 AIR 支持 Stage 3D 加速图形渲染。 Stage3D ActionScript API 是一组支持高级 2D 和 3D 功能的底层 GPU 加速 API。这些底层 API 为开发人员提供了灵活性,使其可以利用 GPU 硬件加速显著提高性能。您还可以使用支持 Stage3D ActionScript API 的游戏引擎。

有关详细信息,请参阅 游戏引擎、3D 和 Stage 3D

视频平滑

为提高性能,在 AIR 上已禁用视频平滑。

本机功能

许多移动平台都提供无法通过标准 AIR API 访问的功能。从 AIR 3 起,您可以使用您自己的本机代码库扩展 AIR。这些本机扩展库可以访问操作系统的可用功能甚或指定设备的特定功能。可以在 iOS 上使用 C 语言编写以及在 Android 上使用 Java 或 C 语言编写本机扩展。有关开发本机扩展的信息,请参阅 Adobe AIR 本机扩展简介