软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
BREW常见问题解答(FAQ 5)-处理器和事件处理

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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




相关文章

相关软件