《BREW進階與精通——3G移動增值業務的運營、定製與開發》連載之83——BREW後台應用

來源:互聯網
上載者:User

在BREW 3.x 版本以前,後台應用根本不響應suspend和resume事件,也處理有終端使用者相關的互動操作,例如按鍵事件等等。

在BREW 3.x 以後,任何應用都可以對按鍵事件進行處理,可以簡單地通過註冊掩碼為NMASK_SHELL_KEY的通知來實現。通過ISHELL_StartBackgroundApplet()直接啟動一個後台應用,後台應用可以直接處理EVT_APP_START_BACKGROUND 事件而不是EVT_APP_START事件。在BREW 2.x中使一個應用處於後台運行狀態的方法是,在調用ISHELL_CloseApplet() 且接收到EVT_APP_STOP時, 將 *(dwParam) 設定為FALSE,例如(*(oolean *)dwParam) = FALSE。

一個BREW應用與後台應用,或者後台應用與另一個後台應用之間一般採用事件傳遞的方式進行通訊。終止一個後台應用的後台運行狀態有三種情況,第一種是接收到其他應用的發來的事件,一種是後台應用執行完相關操作後調用ISHELL_CloseApplet()來關閉自己,另一種是後台應用調用ISHELL_StartApplet()使自己處於前台運行狀態,然後通過使用者的互動來關閉自己。

下面是BREW2.X中使用後台應用的樣本:

typedef struct _bgApp

{

AEEApplet a;

oolean m_bGoBg; // used to toggle whether to run in background mode

} bgApp;

……

switch (eCode)

{

case EVT_APP_START:

if(pMe->m_bGoBg)

ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE); // send applet to background

return TRUE;

case EVT_APP_STOP:

if(pMe->m_bGoBg)

*((oolean*) dwParam) = FALSE; // set dwParam to run in bg

return TRUE;

case EVT_USER:

if(pMe->m_bGoBg)

{

pMe->m_bGoBg = FALSE;

ISHELL_StartApplet(pMe->a.m_pIShell, AEECLSID_BGAPP); // make applet active

}else{

pMe->m_bGoBg = TRUE;

// trigger EVT_APP_STOP to send app to  background

ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE);

}

return TRUE;

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.