- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
10年mtk开发心得
MTKtask小结1 MTK的基本执行单元是task, 从操作系统的角度来理解,task有些像线程而不是进程,进程之间的地址空间是相互隔离的,说白点就是进程之间的全局变量是不相互干扰的。而线程之间则是用同一个地址空间,MTK的task之间的地址空间也是共同的,也就是说在MTK编程里,定义了一个全局变量,那么在任何一个task里面都能引用,发送: 、选择发送选项 以为例。在高亮事件中注册ENTRY函数: 、进入【(仅)发送】选项 、设置短信发送请求标志 、注册短信发送回调函数 注册短信发送回调函数(callback,mmi_msg_send_msg_rsp),调用短信发送预处理函 数(action,mmi_frm_sms_pre_send_sms) MTKMMIevent小结1 在MTKMMI里面有各种event,最常见的有跟交互相关的按键event,触摸屏event。跟各种具体事件比如电话event,短信event,电量event,信号量event,timerevent等等。 MTK都有相应的处理方式,跟交互相关的按键()和触摸屏()各有一套自己的机子,timerevent已经在MTKtimer小结3介绍过,还有一套机制就是处理各种其他事件,它主要分为普通事件和interruptevent,interruptevent主要用于需要弹出的对话框的event。 MTKMMIevent小结2 今天主要看分析,常用事件机制。做过MTK开发的童鞋应该知道要接受MTKL4层的消息,用一个注册函数SetProtocolEventHandler,注册一个event的处理函数。比如短信,电话,电池电量,信号量等等都是通过这个函数来注册消息。当L4层处理完封装事件后,就会把这个event发送到MMItask里来(消息发送可以看MTKtask小结5),然后MMItask通过这个event机制,找到相应的处理函数,进行处理。实现这种机制,也是考虑到零活性和扩张性。如果都在MMItask里面,用switchcase来处理,那就很疯狂了,长度不说,写个应用,定义个消息,都要去改MMItask,所以这个机制实现虽然比较简单,但是还是很有必要的。 昨天也说到,这个机制的event主要有两种,普通event和intrruptevent(中断事件),这些主要是一些需要中断当前应用的事件(主要是看那些弹出框),比如电话,有些应用需要提前处理这个消息,还有些应用需要在这个事件处理完毕后处理。还是看代码吧 在MMItask最后,会调用函数ProtocolEventHandler,这个函数就是找到相应event的相应处理函数(平台不一样,可能实际的函数名字有些区别,但是流程基本上一样的,我这里被#define到mmi_frm_execute_current_protocol_handler) 注意:event的处理函数使用SetProtocolEventHandler来注册。 //MsgStruct是具体事件的消息体 voidmmi_frm_execute_current_protocol_handler(U16eventID,void*MsgStruct,intmod_src,void*peerBuf) { U16count=0; PsExtPeerFuncPtrcurrFuncPtr=NULL; U8interrup_result=MMI_FALSE;/*Falsenothandleinterrupt,Truewillhandle*/MMI_BOOLquery_result=MMI_FALSE,execute_result=MMI_FALSE; interrupt_event_hdlrint_func=NULL,post_int_func=NULL; mmi_frm_int_event_typecurrent_frm_int_event; idx=mmi_frm_search_event; { //遍历protocolEventHandler查找是否有event注册了回调函数 //虽然这个方法感觉比较笨,就一个数组,实际上对速度没有什么影响for(count=0;count0) { protocolEventHandler[count].eventID=protocolEventHandler[count-1].eventID; protocolEventHandler[count].entryFuncPtr= protocolEventHandler[count-1].entryFuncPtr;
文档评论(0)