BREW常見問題解答(FAQ 5)-處理器和事件處理 (轉)
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Redis 快取常見問題處理Redis快取
- 常見佇列等待事件處理思路佇列事件
- Mac遊戲安裝常見問題處理Mac遊戲
- 常見的wait等待事件及處理(zt)AI事件
- 5種常見的 DNS 故障診斷及問題處理方法DNS
- 常見處理器MCU、MPU、DSP、FPGA等嵌入式處理器FPGA
- 迭代器和異常處理
- FAQ | PerfDog 常見問題解答第二期
- [轉載] Java異常處理習題Java
- 【FAQ】統一掃碼服務常見問題及解答
- .net異常處理的效能問題
- Python錯誤處理和異常處理(二)Python
- 事件處理事件
- React 深入系列5:事件處理React事件
- 事件分發和處理事件
- C#基礎之前處理器,異常處理C#
- JSP 異常處理如何處理?JS
- oracle常見異常等待——latch處理思路Oracle
- JavaSwing 事件處理Java事件
- vue事件處理Vue事件
- Flutter | 事件處理Flutter事件
- JavaScript事件處理JavaScript事件
- React事件處理React事件
- 【FAQ】申請Health Kit許可權的常見問題及解答
- 2_Bean的生命週期和常見的後處理器Bean
- APatch常見問題解答
- springboot下新增全域性異常處理和自定義異常處理Spring Boot
- 修復 SSL Certificate Problem,如何定位及常見問題的處理策略
- React TSLint中常見的問題及處理方法React
- [git] git問題處理Git
- golang json處理問題GolangJSON
- 人形動畫常見IK的處理動畫
- NO.A.0001——zabbix常見故障的處理
- W3C的事件處理和IE的事件處理有哪些區別?事件
- 第七章 事件處理器事件
- 約束和異常處理
- [轉] Scala 中的非同步事件處理非同步事件
- 異常處理
- SVN異常處理——禁止訪問