mtk event 事件机制总结

mtk event 事件机制总结

ID:11476293

大小:122.00 KB

页数:16页

时间:2018-07-12

mtk event  事件机制总结_第1页
mtk event  事件机制总结_第2页
mtk event  事件机制总结_第3页
mtk event  事件机制总结_第4页
mtk event  事件机制总结_第5页
资源描述:

《mtk event 事件机制总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、MTKMMIevent小结1在MTKMMI里面有各种event,最常见的有跟交互相关的按键event,触摸屏event。跟各种具体事件比如电话event,短信event,电量event,信号量event,timerevent等等。MTK都有相应的处理方式,跟交互相关的按键(KeyBrd.c)和触摸屏(TouchScreen.c)各有一套自己的机子,timerevent已经在MTKtimer小结3介绍过,还有一套机制就是处理各种其他事件,它主要分为普通事件和interruptevent,interrupte

2、vent主要用于需要弹出的对话框的event。MTKMMIevent小结2今天主要看分析,常用事件机制。做过MTK开发的童鞋应该知道要接受MTKL4层的消息,用一个注册函数SetProtocolEventHandler,注册一个event的处理函数。比如短信,电话,电池电量,信号量等等都是通过这个函数来注册消息。当L4层处理完封装事件后,就会把这个event发送到MMItask里来(消息发送可以看MTKtask小结5),然后MMItask通过这个event机制,找到相应的处理函数,进行处理。实现这种机制,

3、也是考虑到零活性和扩张性。如果都在MMItask里面,用switchcase来处理,那就很疯狂了,长度不说,写个应用,定义个消息,都要去改MMItask,所以这个机制实现虽然比较简单,但是还是很有必要的。昨天也说到,这个机制的event主要有两种,普通event和intrruptevent(中断事件),这些主要是一些需要中断当前应用的事件(主要是看那些弹出框),比如电话,有些应用需要提前处理这个消息,还有些应用需要在这个事件处理完毕后处理。还是看代码吧在MMItask最后,会调用函数ProtocolEve

4、ntHandler,这个函数就是找到相应event的相应处理函数(平台不一样,可能实际的函数名字有些区别,但是流程基本上一样的,我这里被#define到mmi_frm_execute_current_protocol_handler)注意:event的处理函数使用SetProtocolEventHandler来注册。//MsgStruct是具体事件的消息体voidmmi_frm_execute_current_protocol_handler(U16eventID,void*MsgStruct,intmo

5、d_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_

6、event_typecurrent_frm_int_event;idx=mmi_frm_search_event();{//遍历protocolEventHandler查找是否有event注册了回调函数//虽然这个方法感觉比较笨,就一个数组,实际上对速度没有什么影响for(count=0;count

7、rFuncPtr)protocolEventHandler[count].entryFuncPtr;//这个地方时,一个优化//处理的事情就是把刚才现在处理的eventid往前移动一个单位//这是考虑到程序的局部性原理,这个优化还是很有必要的if(count>0){protocolEventHandler[count].eventID=protocolEventHandler[count-1].eventID;protocolEventHandler[count].entryFuncPtr=protoco

8、lEventHandler[count-1].entryFuncPtr;protocolEventHandler[count-1].eventID=eventID;protocolEventHandler[count-1].entryFuncPtr=(PsFuncPtr)currFuncPtr;}break;}}}//这个就是查找是否是中断事件current_frm_int_event=mmi_frm_interrupt_ev

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。