Symbian中的活动对象的存在是由它的系统功能的结构决定的。它的系统功能是由一系列的服务(Server)完成的,通过一些定义好的API提供给客户端(Client),也就是我们的程序使用。
这些功能实际上并不是在我们的程序的进程是执行的,所以很多的API都有同步(Sychronous)和异步(Asychronous)的版本。
那如果我们使用异步版本的API当它完成任务时我们的程序如何得知它?
让进程挂起,直到功能完成才继续执行?这和同步函数有什么区别?还有进程挂起的这段时间内程序的UI也处理挂起状态,用户无法对程序进行任何操作,这可是应用程序的大忌。
由程序框架提供一个捕捉完成信号的函数的重载?这个比上一个方法好,但程序中这么多异步操作都集中在一起处理是不是太乱了一点,而且各个对象的异步操作都集中在一起是不是打破了封装了?
那再进一步,在有用到异步函数的对象内步实现一系列的接口,在这些接口中来处理这些消息怎样?Bingo!这就是活动对象!
活动对象是可以捕捉到它内部的异步操作的返回消息的对象。