MTK - 10A帮助文档(总结)(2)
3.返回屏幕
1)mmi_frm_group_close_ex (MMI_ID group_id, U32 type)中会调用group_close,而该函数会先关闭该节点的孩子节点,也就是screen节点,而scrn_close()会scrn_inactive()screen节点后,在调用execute_node_deinit(base_node_struct *node, mmi_scenario_evt_struct* evt)把POST_EXECUTE_DEINIT的操作写进队列中,接着调用scenario_process_post_evt_ex读取队列中的操作执行execute_node_post_deinit来释放screen申请的内存。这么一来原有的screen就不在了,对于group来说也会做类似的操作,同样是先inactive,再exit,最后deinit都会把操作写进队列,这样一来就结束了显示着的界面。
2)现在就是要看怎么实现返回的了,其实简单来说就是激活了被释放节点的前一个节点,如果该节点是group会激活该group下的screen,如果是screen就直接激活screen,调用screen节点所记录下的entry函数,实现了返回的效果。注意,在被释放节点的父节点为shell.scenario_root时,在返回时会调用GobackHistory,来返回历史。这个是我们熟知的方法,也就不在这一一介绍了。 具体流程如下图所示:
6
GroupHeadTailGroupScreennextActvie_groupHead\\tailScreenActive_screenGroupshell.scenario_dangleHeadTailHead\\tailScreenScreennextGroupInctive_screenActvie_group一些删屏响应函数在这调用shell.scenario_Groupdangle小弟…HeadTailScreen先释放保存控件ScreennextGroupActvie_group申请的内存,再释放Screen申请的内存Groupshell.scenario_Active_groupdangle你敢不走么?Head\\TailHead\\tailScreen激活这个节点的操Group作已写进队列Inctvie_groupGroupshell.scenario_Active_groupdangle。。。Head\\TailScreenGroupActive_screen释放内存,这个过程会调用根据本节点保留的控该节点记录的进入函数,用件信息还原历史户可以按自己需求写该函数
7
4.删除屏幕
其实删屏在返回屏幕中已经介绍了他的具体流程,这里就简单介绍些常用的几个删屏函数吧:
1)mmi_frm_group_close (MMI_ID group_id):删除相应ID的group,删除group会连带删除该group下的所有子节点。
2)mmi_frm_scrn_close_active_id()顾名思义会删除激活状态下的screen 3)mmi_frm_scrn_close_ex (MMI_ID parent_id, MMI_ID scrn_id, scrn_close_type_enum flag)删除指定ID的screen。 4)mmi_frm_scrn_multiple_close (MMI_ID parent_id, MMI_ID start_scrn_id, U8 b_inc_start, U16 count, MMI_ID end_scrn_id, U8 b_inc_end)这个类似53平台上的DeleteHistoryInt(),用来删除多个屏幕。
注意:如果被删的节点的父节点,只有一个子节点(也就是被删的节点),那么同样会删除该节点的父节点。
5.插入节点
1)mmi_frm_group_insert (MMI_ID parent_id, MMI_ID base_id, mmi_frm_node_struct *new_node_info, mmi_scenario_node_flag flag)
2)mmi_frm_scrn_insert (MMI_ID parent_id, MMI_ID base_id, mmi_frm_node_struct *new_node_info, mmi_scenario_node_flag flag)
两者都会根据传入的flag参数确定加入的位置,加节点的流程与进屏加节点类似,只是位置不同,不再分析流程。
6.一些函数介绍
1.mmi_frm_get_active_scrn_id(MMI_ID *group_id, MMI_ID *scrn_id)获取激活的group和screen的ID
2.mmi_frm_group_get_active_id(void)
3.mmi_frm_scrn_get_active_id(void)和以前类似,对tab页也是获取主屏ID
4.mmi_frm_scrn_tab_get_active_id(void)这个函数是获取tab页主屏的ID 5.mmi_frm_scrn_tab_page_get_active_id(void)获取激活的page页ID(也就是子屏ID)
6.mmi_frm_scrn_get_active_gui_buf (void)这个函数封装了所有screen的历史获取,包括tab页。
7.mmi_frm_scrn_set_leave_proc (MMI_ID parent_id, MMI_ID scrn_id, mmi_proc_func proc)设置删屏响应函数
相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




