1

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

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

4

1 回答 1

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

后台应用程序存在限制。您不能更改屏幕或直接与用户交流。开发人员应注意后台应用程序使用的内存。这个非常重要。

于 2013-12-23T07:00:18.390 回答