如何在后台启动BREW应用程序



我知道Brew应用程序有三种类型:active、suspend&背景以活动或挂起状态启动一个BREW应用程序非常简单。我知道在BREW2.0和更高版本中,有一种新的应用程序类型可以允许我们在后台创建一个应用程序。它不会停留在应用程序堆栈中,也不会通过活动或恢复命令更改状态。无论用户命令系统接收到什么,它都将始终处于后台。在我的一个小项目中,我需要创建并启动一个这样的后台应用程序。

不幸的是,我在高通或谷歌上找不到一个简单的例子。有没有程序员遇到过同样的问题?

是的,你说得对。BREW2.0+支持后台应用程序。

当我们初始化一个后台应用程序时,就像其他普通的新应用程序一样,它可以直接通过brew应用程序接口启动。您也可以通过ISHELL_StartApplet功能启动它。

当您想将一个brew应用程序放在后台时,需要在处理EVT_APP_STOP事件时执行,并且必须将dwParam设置为false。通过此操作处理EVT_APP_STOP后,应用程序将被置于后台。如果您想将其更改为正常应用程序,则需要调用ishell_StartApplet函数以再次激活它本身。

示例代码:

typedef struct _bgApp
{
AEEApplet a;
boolean m_bGoBg;
} bgApp;
switch (eCode)
{
case EVT_APP_START:
if(pMe->m_bGoBg)
ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE); 
case EVT_APP_STOP:
if(pMe->m_bGoBg)
*((boolean*) dwParam) = FALSE;
return TRUE;
case EVT_USER:
if(pMe->m_bGoBg)
{
pMe->m_bGoBg = FALSE;
// make applet active
ISHELL_StartApplet(pMe->a.m_pIShell, AEECLSID_BGAPP);   }
else
{
pMe->m_bGoBg = TRUE;
// trigger EVT_APP_STOP to send app to background
ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE); 
}
return TRUE;
}      

后台应用程序存在限制。您不能更改屏幕或直接与用户通信。开发人员应该小心后台应用程序使用的内存。这一点非常重要。

最新更新