Symbian OS消息机制与常用操作解析
Symbian OS 的消息机制还蛮有意思的。它不像现代的推送系统,而是靠消息队列和一套自家的CActive机制搞定线程通信。你要是做过老塞开发,应该对RunL()这个函数挺熟。文章里面讲得还挺细,从TDesC怎么传消息,到CMdaDataEnv怎么发消息,一步步全拆开了。
消息类型的定义也不麻烦,直接用enum搞定。注册消息器嘛,用CActive::SetSubscribedAndActive()就行。时判断消息类型,再切分逻辑去跑具体函数,像这样:
void CActive::RunL() {
switch (Message().Type()) {
case EMsgType1: HandleMsgType1(); break;
case EMsgType2: HandleMsgType2(); break;
}
}
你要做异步也没问题,Start()和Cancel()方法管得住。响应还挺快,代码也清爽。
文档还有个小例子,发消息用env.Send(),接收用自定义的CActive子类,嗯,跑起来还挺顺。反正你要是还在跟 Symbian 打交道,或者想看看经典平台是怎么玩消息机制的,这篇文档还是值得翻一翻的。
如果你对其他平台的消息队列也感兴趣,可以看看下面这些:
文件大小:28.83KB
评论区