异步请求与活动对象
只要不是太费时的操作,其他OS 下的程序多以同步方式编写,即使是异步方式也多以线程轮询的方式来确认请求是否完成。但 Symbian OS 的设计者基于于效率及节省电源的考虑并没有采用通常方式,而是大量地采用了“异步请求 + 活动对象”的特有方式。
异步是指提交请求后不等待请求完成就立即返回。立即返回的好处在于更高的程序效率与良好的用户体验。
Symbian OS也支持线程,但官方不推荐使用线程,而是推荐使用活动对象。活动对象是一个封装了请求及请求完成后回调函数的类,使用时继承 CActive 类重写相关函数即可。
3. 在活动对象的回调中根据系统的返回状态作进一步处理,如通知活动对象的使用者。
此外,对于已提出而尚未完成的请求,活动对象还可以将其取消。活动对象同一时间内至多只能有一个请求在运作。
在Symbian 的应用程序中,活动对象一般都处于最低层最基础的位置,因此在 Symbian 编程中回调 / 观察机制的使用也极其普遍。
回调函数及观察者模式
回调函数是相对于主调函数而言的。主调函数由自己编写自己调用;而回调函数却是由自己编写,由系统/ 框架在适当的时机来调用的。事件处理便是典型的回调函数。
观察者模式是为了让一个对象的变化能以及时通知相关对象而提出的,同时这种通知不需要准确知道对方(观察者)是谁。
通用的观察者模式如图所示:
在Symbian 的实际程序中该模式做了很多简化,多数的情况下观察者只有一个。
——摘自毕业论文