MTK平臺退出Screen的回調函數

MTK平臺退出Screen的回調函數

接觸MTK平臺的人都知道MTK Application Screen的“入口”函數是EntryNewScreen,其中的一個參數爲Exit Handler,根據字面意思的理解,這個函數應爲退出Screen時的回調函數。

所以,一些有Win32開發經驗的程序員很自然的想到利用這個回調函數來完成釋放資源之類的處理,就如同Win32應用程序對WM_CLOSE消息的處理。

但是,這其實是個誤區。

MTK的應用程序都是在OS的一個任務(MMI Task)內完成,其Screen組織方式也並非像Windows那樣複雜,而只是簡單的堆棧。形象一些,可以想象有一個瀏覽器窗口,沒有前進只有後退按鈕,從一個網頁可以通過超鏈接打開別的網頁,這些網頁相互獨立而並沒有什麼關係,當一個新的網頁打開後,此前的網頁就被暫時保存,用戶可以通過後退的方法重新看到,MTK的窗口機制正是如此。

因此,MTK的Screen並不存在真正意思上的Close,也就是說,無論你是結束當前的界面返回上一層,或者在當前界面中進入別的界面,如通過左SoftKey進入名爲“選項菜單”的界面,或者來了一則短信,彈出“通知”界面,Exit Handler都會被調用到。

那麼有沒有辦法只在結束當前界面返回上一層時進行處理呢,MTK提供了另一個函數,這就是

U8 SetDelScrnIDCallbackHandler(U16 ScrnID, HistoryDelCBPtr funcPtr)

只有通過GoBackHistory等出棧的方法離開Screen,回調函數funcPtr纔會被調用。

這樣做,大大方便了我們程序的開發,但是,要注意,仍然不可將它與WM_CLOSE的動作相提並論,在開發MTK Application時,我們應拋棄原有的任務式應用程序的想法,以MTK的本來面目來審視之。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章