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

时间:2013-12-23 06:08:09

标签: brew-framework

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

不幸的是,我在Qualcomm或Google上找不到一个简单的例子。是否有任何程序员遇到过同样的问题?

1 个答案:

答案 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;
    }      

背景应用存在局限性。您无法更改屏幕或直接与用户通信。开发人员应该注意后台应用程序使用的内存。这是非常重要的。