我知道Brew应用程序有3种类型:active,suspend&背景。启动一个BREW应用程序作为活动或暂停非常简单。我知道在BREW2.0及更高版本中,有一种新的应用程序类型可以允许我们在后台创建一个应用程序。它不会停留在应用程序堆栈中,而是通过active或resume命令更改状态。无论用户命令系统收到什么,它都将始终保持在后台。在我的一个小项目中,我需要创建并启动一个这样的后台应用程序。
不幸的是,我在Qualcomm或Google上找不到一个简单的例子。是否有任何程序员遇到过同样的问题?
答案 0 :(得分: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;
}
背景应用存在局限性。您无法更改屏幕或直接与用户通信。开发人员应该注意后台应用程序使用的内存。这是非常重要的。