活動對象簡介

異步請求與活動對象


只要不是太費時的操作,其他OS 下的程序多以同步方式編寫,即使是異步方式也多以線程輪詢的方式來確認請求是否完成。但 Symbian OS 的設計者基於於效率及節省電源的考慮並沒有採用通常方式,而是大量地採用了“異步請求 + 活動對象”的特有方式。

異步是指提交請求後不等待請求完成就立即返回。立即返回的好處在於更高的程序效率與良好的用戶體驗。

Symbian OS也支持線程,但官方不推薦使用線程,而是推薦使用活動對象。活動對象是一個封裝了請求及請求完成後回調函數的類,使用時繼承 CActive 類重寫相關函數即可。

活動對象的一般工作流程如下:

1.  向系統提出請求;

2.  系統完成後調用該活動對象的回調函數;

3.  在活動對象的回調中根據系統的返回狀態作進一步處理,如通知活動對象的使用者。

此外,對於已提出而尚未完成的請求,活動對象還可以將其取消。活動對象同一時間內至多只能有一個請求在運作。

Symbian 的應用程序中,活動對象一般都處於最低層最基礎的位置,因此在 Symbian 編程中回調 / 觀察機制的使用也極其普遍。


回調函數及觀察者模式

回調函數是相對於主調函數而言的。主調函數由自己編寫自己調用;而回調函數卻是由自己編寫,由系統/ 框架在適當的時機來調用的。事件處理便是典型的回調函數。

觀察者模式是爲了讓一個對象的變化能以及時通知相關對象而提出的,同時這種通知不需要準確知道對方(觀察者)是誰。

通用的觀察者模式如圖所示:

 

 

 

 

Symbian 的實際程序中該模式做了很多簡化,多數的情況下觀察者只有一個。

 

 

 

                                                    ——摘自畢業論文

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