ITPub博客

首页 > 应用开发 > IT综合 > BREW常见问题解答(FAQ 5)-处理器和事件处理 (转)

BREW常见问题解答(FAQ 5)-处理器和事件处理 (转)

原创 IT综合 作者:gugu99 时间:2007-10-20 17:32:17 0 删除 编辑
BREW常见问题解答(FAQ 5)-处理器和事件处理 (转)[@more@]

FAQ 3a:

问:非高通的芯片能够使用BREW吗?
答:目前的BREW仅支持高通MSM芯片,但是我们认为将来BREW也能很好的支持非高通芯片。现在谈论BREW除了支持高通MSM系列芯片之外还支持其他芯片,尚为之过早。

FAQ 3b:

问:BREW支持那些设备?
答:当前,BREW支持高通系列芯片:MSM3100, MSM3300, MSM5000, MSM5100, and MSM5105。而且,对于特定电话机或者其他设备,需要具有"BREW enabled"。

FAQ 4a:

问:应用程序需要处理什么事件?
答:除了EVT_APP_START和EVT_APP_STOP之外的事件,为了通过TRUE BREW测试,你的应用程序还必须处理EVT_APP_SUSPEND和EVT_APP_RESUME事件。

暂停和恢复应用程序的更多信息参看暂停和恢复事件。

FAQ 4b:

问:使用电话的"End"键和"Clear"键有什么不同?
答:对于一个OEM设备,指定的按键有下面两种行为:

1、一个键,在被按下时,关闭当前应用程序。大多数的OEM都指定这种键为AVK_CLR键。
2、一个键,在被按下时,关闭所有应用程序。大多数的OEM都指定这种键为AVK_END键。

AVK_END被按下时,BREW立即给活动的应用程序发送EVT_APP_STOP消息,而不是先发送AVK_END消息。另外卸载应用程序之前,调用FreeAppData()回调程序;其它的事件和回调将不会发生。

AVK_CLR被按下时,BREW首先给应用程序发送该消息。如果应用程序不能处理这个事件(比如,返回FALSE),BREW就将关闭应用程序。在执行AVK_CLR过程中,记住要调用FreeAppData,例:

 case AVK_CLR:

 if (pMe->OnMainMenu == TRUE) {

 // App is on main menu.  Therefore pressing CLR key should cause app to exit

 HelloWorld_FreeAppData(pi);  //clean up

 return FALSE;  //return FALSE so that BREW will now close application

 }

 else {  // Not on main menu.

 // Therefore pressing CLR key should cause app to undo one level of menu

 // nesting.  Show previous menu in menu hierarchy

 return TRUE;

 }

确认FreeAppletData()完全地清除所有分配的内存和资源,即由CreateInstance, CreateDialog, MALLOC创建的对象和接口必须相应被Release和FREE掉。

FAQ 4c:

问:我如何处理电池电量低的警告?
答:BREW在发生低电量警告时发送EVT_APP_SUSPEND事件。为了处理低电量情况,你必须正确的处理EVT_APP_SUSPEND和EVT_APP_RESUME事件。

FAQ 4d:

问:Ishell_SendEvent()和ISHELL_PostEvent()有什么不同?
答:ISHELL_SendEvent()和ISHELL_PostEvent()都是用来发送事件的函数。不同的是发送的方式不同。

ISHELL_SendEvent()是把事件立即发送到某类ID的应用程序。如果当前类的实例不能获得,AEE外壳就创建一个,然后以特定的事件代码和数据参数调用IAPPLET_HandleEvent()函数。除非选择启动自己,应用程序会在完全处理事件后终止。

ISHELL_PostEvent()和ISHELL_SendEvent()类似,除了目标类的IAPPLET_HandleEvent()函数不能立即被调用。发送的事件放置到队列重,之后再发送,这就允许应用程序不必中断运行,在当前函数运行完毕后,再处理事件。

ISHELL_SendEvent()函数允许控制目标类应用程序。这个函数直接向目标应用程序发送事件。ISHELL_PostEvent()则是在下一个事件处理周期开始后才会处理。这个函数非常实用,使得系统允许事件处理时,才会处理发送的事件。

FAQ 4e:

问:我的应用程序可以向系统注册哪些通知事件?
答:应用程序能够向系统注册的系统通知有:

Tapi (Class ID: 0x01001007) 
NMASK_TAPI_STATUS 0x0001 TAPI状态处理事件
NMASK_TAPI_SMS_TEXT 0x0002 短消息到达事件
NMASK_TAPI_SMS_TS 0x0004 特定通信服务ID短消息
 
.NETMGR 
NMASK_OPENED  0x0001 网络层可获得
NMASK_CLOSED  0x0002 网络层关闭
NMASK_IDLE  0x0004 网络层可获得且空闲

请注意INETMGR NMASK_UDP_LISTEN不能工作,不推荐使用。

应用程序还能够注册来自动态应用和模块的接收通知回调。参加INotifier接口获得更多信息。

FAQ 4f:

问:在没有供应电话的情况下,我如何测试应用程序Suspend/Resume事件?
答:在Kyocera 3035,你可以在使能自动keyguard(Main Menu->Settings->Keyguard)后测试应用程序的Suspend/Resume事件的处理。当Keyguard触发,运行的应用将接收到Suspend事件。屏幕被锁定时,应用程序将接收到Resume事件。

在ShARP Z-800,你可以在设置闹钟一段时间后取消(Main Menu->Setup/Tools->Alarm->Daily Alarm)后测试应用程序的Suspend/Resume事件的处理。运行应用程序后,就可以测试了。注意,要使应用程序在闹钟取消后能够成功suspended,那么需要关闭BREW优先级(Main Menu->Setup/Tools->BREW Priority Setting)。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-977684/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    3122
  • 访问量
    2245098