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
文件大小:
评论区