2013-12-23 2 views
1

Я знаю, что приложение Brew имеет 3 типа: активный, приостановить & фон. Запустить одно приложение BREW как активное или приостановить очень просто. Я знаю, что в BREW2.0 и более поздней версии есть новый тип приложения, который позволяет создать одно приложение в фоновом режиме. Он не останется в стеке приложений и изменит статус с помощью команды active или resume. Он всегда останется на заднем плане независимо от того, какая система пользовательской команды получила. В одном из моих небольших проектов мне нужно создать и запустить одно фоновое приложение, подобное этому.Как запустить приложение BREW в фоновом режиме?

К сожалению, я не могу найти простой пример в Qualcomm или Google. Есть ли какой-нибудь программист, столкнувшийся с той же проблемой?

ответ

0

Да, вы правы. BREW2.0 + поддерживают фоновое приложение.

Когда мы запустили фоновое приложение, как и любое другое обычное новое приложение, его можно запустить непосредственно с помощью интерфейса приложения. Вы также можете запустить его с помощью функции ISHELL_StartApplet.

Если вы хотите поместить одно приложение для пивоварения в фоновом режиме, вам нужно сделать это при обработке события 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; 
    }  

Существует ограничение фонового применения. Вы не можете изменить экран или напрямую связаться с пользователем. Разработчик должен быть осторожным в памяти, используемой фоновым приложением. Это очень важно.