一般AP应用程序的生成包含以下几个重要步骤:
1)加载AP,指定AP的创建函数;
2)创建AP,并初始化;
3)在事件处理函数中处理各种事件;
对应的几个重要函数如下:
XXX_Load ----应用程序加载函数;
XXX_CreateInstance ----应用程序创建函数;
XXX_HandleEvent ----应用程序事件处理函数;
// hello world中所改动的handle event替换代码
AECHAR *buffer= (AECHAR*)L"Hello!I love Solis!";
AECHAR szText[] = {'H','e','l','l','o',' ','W','o', 'r', 'l', 'd', '\0'};
switch (eCode){
case EVT_APP_START:
IDISPLAY_DrawText(pMe->a.m_pIDisplay, // 显示实例
AEE_FONT_BOLD, // 使用粗BOLD字体
szText, // 文本 - 通常来自资源
-1, // -1 = 使用全字符串长度。
0, // x 忽略 - IDF_ALIGN_CENTER
0, // y 忽略 - IDF_ALIGN_MIDDLE
NULL, // 不进行裁减 (No clipping)
IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE); //样式
IDISPLAY_Update (pMe->a.m_pIDisplay);
return(TRUE);
case EVT_APP_STOP:
default:
break;
}
return(FALSE);
想在BREW终端上写好稳定健壮的应用程序,调试信息是必不可少的,因为唯有它,才能知道调试中系统崩溃前一刻,程序可能跑到哪一行。否则,只能使用硬件调试器跟踪,那将是更为麻烦。一般UI应用崩溃,都可以使用调试信息找到应用崩溃问题。
DBGPRINTF调试信息:
建议调试信息尽可能做到5-10行代码,至少有一行调试信息打印出来,不要太多,但也不要太吝啬。
写文件调试信息:
有些应用可能需要使用写文件的方式保存日志,建议在关键地方写日志,文件到一定大小再清掉日志重新写。太大的日志会影响系统执行速度。
调试信息不应该放的地方:
1:窗口的函数中
2:列表的显示函数中(XXXX_Adapter)
大部分应用在启动开始就需要做内存检查。如果内存不足,应用应该自动退出。
函数中尽量少使用大空间数组,而是使用指针分配内存空间;对大于20个字节的结构或者数组,都该使用MALLOC来分配空间。如把原来声明
AECHAR szTemp[10];
的过程改为
AECHAR *szTemp = NULL;
szTemp = MALLOC(10*sizeof(AECHAR));//检查内存是否为空后再使用
FREEIF(szTemp);
//代码风格
使用异步消息:
函数处理中尽量使用异步消息机制(ISHELL_PostEvent)来处理。如果函数调用的其它函数非常多次,也是有可能导致堆栈溢出。这种处理的主要目的,就是把原来同步处理的过程,分成几个异步消息处理,避免频繁压栈导致栈空间溢出。
提示:
不要使用ISHELL_SendEvent来发送消息,该函数是同步函数。