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

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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短消息

INETMGR

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)。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航