【问题标题】:How to launch a BREW application in background?如何在后台启动 BREW 应用程序?
【发布时间】:2013-12-23 06:08:09
【问题描述】:

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

很遗憾,我在 Qualcomm 或 Google 上找不到简单的示例。有没有遇到同样问题的程序员?

【问题讨论】:

    标签: brew-framework


    【解决方案1】:

    是的,你是对的。 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;
        }      
    

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

    【讨论】:

      猜你喜欢
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 2023-04-08
      • 2017-03-08
      相关资源
      最近更新 更多