BREW常見問題解答(FAQ 5)-處理器和事件處理 (轉)

worldblog發表於2007-12-14
BREW常見問題解答(FAQ 5)-處理器和事件處理 (轉)[@more@]

FAQ 3a:

問:非高通的能夠使用BREW嗎?
答:目前的BREW僅支援高通MSM晶片,但是我們認為將來BREW也能很好的支援非高通晶片。現在談論BREW除了支援高通MSM系列晶片之外還支援其他晶片,尚為之過早。

FAQ 3b:

問:BREW支援那些裝置?
答:當前,BREW支援高通系列晶片:MSM3100, MSM3300, MSM5000, MSM5100, and MSM5105。而且,對於特定電話機或者其他裝置,需要具有"BREW enabled"。

FAQ 4a:

問:應用需要處理什麼事件?
答:除了EVT_APP_START和EVT_APP_STOP之外的事件,為了透過TRUE BREW測試,你的應用程式還必須處理EVT_APP_SUSPEND和EVT_APP_RESUME事件。

暫停和恢復應用程式的更多資訊參看暫停和恢復事件。

FAQ 4b:

問:使用電話的"End"鍵和"Clear"鍵有什麼不同?
答:對於一個OEM裝置,指定的按鍵有下面兩種行為:

1、一個鍵,在被按下時,關閉當前應用程式。大多數的OEM都指定這種鍵為AVK_CLR鍵。
2、一個鍵,在被按下時,關閉所有應用程式。大多數的OEM都指定這種鍵為AVK_END鍵。

AVK_END被按下時,BREW立即給活動的應用程式傳送EVT_APP_STOP訊息,而不是先傳送AVK_END訊息。另外解除安裝應用程式之前,FreeAppData()回撥程式;其它的事件和回撥將不會發生。

AVK_CLR被按下時,BREW首先給應用程式傳送該訊息。如果應用程式不能處理這個事件(比如,返回FALSE),BREW就將關閉應用程式。在AVK_CLR過程中,記住要呼叫FreeAppData,例:

 case AVK_CLR:

 if (pMe->OnMainMenu == TRUE) {

 // App is on main menu.  Therefore pressing CLR key should cause app to exit

 HelloWorld_FreeAppData(pi);  //clean up

 return FALSE;  //return FALSE so that BREW will now close application

 }

 else {  // Not on main menu.

 // Therefore pressing CLR key should cause app to undo one level of menu

 // nesting.  Show previous menu in menu hierarchy

 return TRUE;

 }

確認FreeAppletData()完全地清除所有分配的和資源,即由CreateInstance, CreateDialog, MALLOC建立的和介面必須相應被Release和FREE掉。

FAQ 4c:

問:我如何處理電池電量低的警告?
答:BREW在發生低電量警告時傳送EVT_APP_SUSPEND事件。為了處理低電量情況,你必須正確的處理EVT_APP_SUSPEND和EVT_APP_RESUME事件。

FAQ 4d:

問:I_SendEvent()和ISHELL_PostEvent()有什麼不同?
答:ISHELL_SendEvent()和ISHELL_PostEvent()都是用來傳送事件的。不同的是傳送的方式不同。

ISHELL_SendEvent()是把事件立即傳送到某類ID的應用程式。如果當前類的例項不能獲得,AEE外殼就建立一個,然後以特定的事件程式碼和資料引數呼叫IAPPLET_HandleEvent()函式。除非選擇啟動自己,應用程式會在完全處理事件後終止。

ISHELL_PostEvent()和ISHELL_SendEvent()類似,除了目標類的IAPPLET_HandleEvent()函式不能立即被呼叫。傳送的事件放置到佇列重,之後再傳送,這就允許應用程式不必中斷執行,在當前函式執行完畢後,再處理事件。

ISHELL_SendEvent()函式允許控制目標類應用程式。這個函式直接向目標應用程式傳送事件。ISHELL_PostEvent()則是在下一個事件處理週期開始後才會處理。這個函式非常實用,使得允許事件處理時,才會處理傳送的事件。

FAQ 4e:

問:我的應用程式可以向系統註冊哪些通知事件?
答:應用程式能夠向系統註冊的系統通知有:

T (Class ID: 0x01001007) 
NMASK_TAPI_STATUS 0x0001 TAPI狀態處理事件
NMASK_TAPI_SMS_TEXT 0x0002 短訊息到達事件
NMASK_TAPI_SMS_TS 0x0004 特定通訊服務ID短訊息
 
MGR 
NMASK_OPENED  0x0001 層可獲得
NMASK_CLOSED  0x0002 網路層關閉
NMASK_IDLE  0x0004 網路層可獲得且空閒

請注意INETMGR NMASK_UDP_LISTEN不能工作,不推薦使用。

應用程式還能夠註冊來自動態應用和模組的接收通知回撥。參加INotifier介面獲得更多資訊。

FAQ 4f:

問:在沒有供應電話的情況下,我如何測試應用程式Suspend/Resume事件?
答:在Kyocera 3035,你可以在使能自動keyguard(Main Menu->Settings->Keyguard)後測試應用程式的Suspend/Resume事件的處理。當Keyguard觸發,執行的應用將接收到Suspend事件。螢幕被鎖定時,應用程式將接收到Resume事件。

在Sh Z-800,你可以在設定鬧鐘一段時間後取消(Main Menu->Setup/Tools->Alarm->Daily Alarm)後測試應用程式的Suspend/Resume事件的處理。執行應用程式後,就可以測試了。注意,要使應用程式在鬧鐘取消後能夠成功suspended,那麼需要關閉BREW優先順序(Main Menu->Setup/Tools->BREW Priority Setting)。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993199/,如需轉載,請註明出處,否則將追究法律責任。

相關文章