MTK屏幕入栈与出栈的管理.docVIP

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

MTK屏幕入栈与出栈的管理(history管理) 一 从idle screen到main menu 屏幕的过程 EntryIdleScreen EntryNewScreen(IDLE_SCREEN_ID, ExitIdleScreen, NULL, NULL); 这个函数 currTopScrnID = IDLE_SCREEN_ID currExitScrnID = IDLE_SCREEN_ID 在运行ExecuteCurrExitHandler_Ext 这个函数时 currEntryFuncPtr = mmi_pwron_entry_animation_screen currExitFuncPtr = mmi_pwron_exit_animation_screen if (currExitFuncPtr) { MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_EVENT_EXIT_HDLR)); mmu_frm_execute_scrn_exit_handler = MMI_TRUE; (*currExitFuncPtr) (); mmu_frm_execute_scrn_exit_handler = MMI_FALSE; } 这几条语句就 mmi_pwron_exit_animation_screen(); 这个函数了,并没有加上history节点 currExitFuncPtr = ExitIdleScreen currEntryFuncPtr = NULL 当点击了一个ok 键的时候调用了 goto_main_menu 这个函数 。 goto_main_menu 这个函数也同样有 EntryNewScreen(MAIN_MENU_SCREENID, exit_main_menu, NULL, NULL); 这个函数 注意在执行EntryNewScreen 这条语句前关于屏幕的全局变量的值是这样的: currTopScrnID = IDLE_SCREEN_ID currExitScrnID = IDLE_SCREEN_ID currExitFuncPtr = ExitIdleScreen currEntryFuncPtr = NULL currHistoryIndex = -1 IsBackHistory = FALSE historyData 数组的值全部为空 现在进入EntryNewScreen 函数,首先 currTopScrnID的值被改变 currTopScrnID = MAIN_MENU_SCREENID 然后执行ExecuteCurrExitHandler_Ext 这个函数 这时currExitFuncPtr的值为ExitIdleScreen 所以当执行到 if (currExitFuncPtr) { MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_EVENT_EXIT_HDLR)); mmu_frm_execute_scrn_exit_handler = MMI_TRUE; (*currExitFuncPtr) (); mmu_frm_execute_scrn_exit_handler = MMI_FALSE; } 语句的时候,其实调用的是ExitIdleScreen 这个函数, 然后再看一下ExitIdleScreen 这个函数。 GenericExitScreen(IDLE_SCREEN_ID, EntryIdleScreen); 这条语句将 history h; h.scrnID = scrnID; h.entryFuncPtr = entryFuncPtr; AddHistory(h); 其实最后调用的是 AddHistoryReference 这个函数 而这个函数就是向historyData 这个全局数组写入数据的函数。 首先判断IsBackHistory 不等于MMI_TRUE,其中IsBackHistory 在程序初始化的时候为0 然后执行 increment(); 该语句改变了currHistoryIndex 的值 使得c

文档评论(0)

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

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

1亿VIP精品文档

相关文档