在基于BREW的移动增值业务开发中,遵循一定的开发原则有助于避免发生常见的错误,并可将测试、调试和重写源代码所需的时间量降至最低,提高系统的开发效率。通过研究和执行这些指导原则,可以将从Windows转换至ARM框架的时间总量降至最低,并使应用程序尽可能在移动设备上正常运行。这些开发原则如下所示:

(1)执行NULL指针检查。创建BREW接口实例时必须检查NULL指针,如果指针有误,则该接口将无法使用。检查已分配内存所传递和返回的所有指针,以确保其有效性。无效指针应使用异常处理机制进行处理。

(2)避免堆栈溢出。不要在函数内将大数组或变量声明为本地变量,因为AEE环境可用的堆栈大小十分有限。如果需要大量内存(例如,大于256字节),则使用动态内存分配操作符,例如MALLQC或Iheap。

(3)不要编写紧凑循环。使用紧凑循环会导致某些目标手机会自动重启设备。因此,不要编写需要花费大量时间处理应用程序中单个事件的紧凑循环,而是采用事件通知或者回调机制。这样可以防止设备重置,在收到事件时,应用程序将进行所需处理,然后从该事件返回,使得其它事件可以发送到该应用程序。

(4)力求应用程序与设备无关。要确保应用程序独立于内存大小、键盘、屏幕大小和色深而能够在任何目标设备上执行,请使用ISHELL GetDevicelnfo从目标设备获取说明。使用该结果指定显示、按键和多媒体等参数,而不要将这些参数直接编码在应用程序中。

(5)使用资源文章。使用资源存储特定语言的字符串、对话框和位图,这有助于应用程序本地化和国际化,即方便第从一种语言的目标设备移植至另一种语言的目标设备,而不要将这些类型的信息直接编码在应用程序中。

(6)清除内存。由于目标移动设备上的可用内存十分有限,因此必须释放未使用的内存。在以下两种情况下需释放内存:一是必须释放所创建对象的所有实例。二是在应用程序终止时,必须释放所有动态内存(所有已分配内存),而且在不需要内存时可以将其及时释放。

(7)不要使用全局或静态变量。BREW结构不支持全局或静态变量(4.X以后的版本才开始支持全局或静态变量的使用),因为动态加载的应用程序无法处理这些数据类型。此外,使用全局或静态变量可能导致连接器出现目标错误,因而建议始终将持久数据存储在应用的主结构中。

(8)定义结构时不要初始化结构。对于ARM编译器,定义并初始化的结构被视为静态数据。

(9)不要在条件语句内分配变量。在使用ARM编译器应避免此类问题,不要在条件语句中编写带有赋值语句代码。

(10)不要使用原始浮点运算(4.X以后的版本才开始支持原始浮点运算的使用)。与上述“不要使用全局变量”相同,此处包括类型转换,建议使用助手函数中提供的浮点函数调用。

(11)要尽量使用BREW提供的标准库函数。由于目标设备上的RAM限制,需要将编译后的代码大小控制到最小,因此应使用标准C库函数的BREW 子集〔如果已提供),而不要使用标准库函数