10年mtk开发心得.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

mmrs369 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档