《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之83——BREW后台应用...

本文介绍了BREW2.x和3.x版本中后台应用的工作原理及交互处理方式。详细阐述了如何在不同版本中使应用进入后台运行状态,并讨论了后台应用间的通信机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BREW 3.x 版本以前,后台应用根本不响应suspendresume事件,也处理有终端用户相关的交互操作,例如按键事件等等。

BREW 3.x 以后,任何应用都可以对按键事件进行处理,可以简单地通过注册掩码为NMASK_SHELL_KEY的通知来实现。通过ISHELL_StartBackgroundApplet()直接启动一个后台应用,后台应用可以直接处理EVT_APP_START_BACKGROUND 事件而不是EVT_APP_START事件。在BREW 2.x中使一个应用处于后台运行状态的方法是,在调用ISHELL_CloseApplet() 且接收到EVT_APP_STOP, *(dwParam) 设置为FALSE,例如(*(oolean *)dwParam) = FALSE

一个BREW应用与后台应用,或者后台应用与另一个后台应用之间一般采用事件传递的方式进行通信。终止一个后台应用的后台运行状态有三种情况,第一种是接收到其他应用的发来的事件,一种是后台应用执行完相关操作后调用ISHELL_CloseApplet()来关闭自己,另一种是后台应用调用ISHELL_StartApplet()使自己处于前台运行状态,然后通过用户的交互来关闭自己。

下面是BREW2.X中使用后台应用的示例:

typedef struct _bgApp

{

AEEApplet a;

oolean m_bGoBg; // used to toggle whether to run in background mode

} bgApp;

……

switch (eCode)

{

case EVT_APP_START:

if(pMe->m_bGoBg)

ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE); // send applet to background

return TRUE;

case EVT_APP_STOP:

if(pMe->m_bGoBg)

*((oolean*) dwParam) = FALSE; // set dwParam to run in bg

return TRUE;

case EVT_USER:

if(pMe->m_bGoBg)

{

pMe->m_bGoBg = FALSE;

ISHELL_StartApplet(pMe->a.m_pIShell, AEECLSID_BGAPP); // make applet active

}else{

pMe->m_bGoBg = TRUE;

// trigger EVT_APP_STOP to send app to background

ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE);

}

return TRUE;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值