说说MTK的EntryNewScreen函数和一个Bug

原创 2011年01月09日 12:02:00

EntryNewScreen(XXX_SCREEN_ID, exit_fun, entry_fun, 0)后,XXX_SCREEN_ID成为Active  Screen Id, 但是XXX_SCREEN_ID的信息并不会加入到历史记录中,而是保存在一组全局变量中。只有当新的screen成为active screen时,XXX_SCREEN_ID才会被加入到history中。

我最近在做信息上下一条切换的功能,我的做法是先删除当前的Screen,然后再重新进入,发现DeleteScreenIfPresent一直没有删除当前屏幕,导致要按两次返回键才能退出信息查看界面。

那是不是DeleteScreenIfPresent有问题?DeleteScreenIfPresent会调用searched_history_node来判断Screen是否Present,searched_history_node的代码如下: 


OK,searched_history_node只是到historyData数组中去找scrnID。由于EntryNewScreen并没有将active screen的信息保存到historyData中,自然找不到,也就无法删除它。

你一定要删除XXX_SCREEN_ID屏幕,咋办?办法是让XXX_SCREEN_ID先加入到historyData中,也就让XXX_SCREEN_ID不再是active screen。在调用DeleteScreenIfPresent前先进入GLOBAL_SCR_DUMMY就好:
 
  
Bingo, 一个Bug解决了。一定有很多人遭遇过同样的问题,所以MTK搞了个GLOBAL_SCR_DUMMY。以前看到这句我还觉得奇怪。都怪付贵的教程不好,呵呵,开玩笑啦。还是侯捷说得好,“源码之前,了无秘密”。 

菜鸟自学MTK一些错误心得

学MTK一个多星期了,自己碰到的问题在这里写下,还有为解决的问题希望大家帮我解决 左右软键返回失效可能是layer_free的问题 layer_free不能正常释放,会出现问题,这两者的原因可能是在E...
  • Gifer
  • Gifer
  • 2009年12月24日 11:43
  • 404

说说&和&&的区别?

http://zhidao.baidu.com/link?url=PRB4Cnj6QcqgqEC8JV6T91G5rfT_jh-4Rtvj8I1ZTXgD3bdLKDbmMTg3hmQ2rWZJiCI...
  • zangchaodotcnatgmail
  • zangchaodotcnatgmail
  • 2015年12月03日 16:36
  • 1269

解析MTK获取系统时间函数大全

MTK获取系统时间函数大全是本文要介绍的内容,主要是来了解并学习MTK中系统时间的获取,具体关于MTK中如何来获取系统时间的内容来看本文详解。 1、定义一个保存当前系统时间的结构体:typede...
  • qust668
  • qust668
  • 2014年09月02日 10:15
  • 894

PHP的is_writeable()函数存在Bug,ci里边有个函数可以判断文件是否真的可写

PHP的is_writeable()函数存在Bug,无法准确判断一个目录/文件是否可写,这里用ci的一个函数来判断目录/文件是否绝对可写,     function is_really_writab...
  • laiyijian
  • laiyijian
  • 2017年05月23日 18:05
  • 317

History管理机制与EntryNewScreen的关系

简单的分析一下History管理机制与EntryNewScreen的关系1.  与EntryNewScreen函数有关的全局变量:    currEntryFuncPtr,     currExitS...
  • lindonghai
  • lindonghai
  • 2011年01月29日 11:15
  • 578

MTK平台学习--History管理机制与EntryNewScreen函数的关系

主要简单分析一下左右软件的事件,以左软键事件为例牵涉到的常用函数:     void SetKeyHandler( FuncPtr funcPtr, U16 keyCode, U16 keyType ...
  • xingkiller
  • xingkiller
  • 2008年05月20日 12:44
  • 650

MTK定时器使用

  本帖来自一篇博客,部分内容被修改!   定时器事件是在指定的时间或时间间隔内反复触发指定的事件,这个指定的事件是通过一个注册的功能函数来实现的。在MTK平台中,操作定时器的具体流程如下:   ① ...
  • improveyourself
  • improveyourself
  • 2011年05月31日 15:49
  • 2816

MTK按键函数

按键常用函数(以左按键为列):     void SetKeyHandler( FuncPtr funcPtr, U16 keyCode, U16 keyType );     void SetLef...
  • dsw846169600
  • dsw846169600
  • 2011年05月05日 12:01
  • 717

java笔试题(引自传智播客)-其他

5. html&JavaScript&ajax部分 1. 判断第二个日期比第一个日期大        如何用脚本判断用户输入的的字符串是下面的时间格式2004-11-21 必须要保证用户的输入是此...
  • sjz64472418
  • sjz64472418
  • 2011年11月22日 21:16
  • 5066

Java面试宝典 HTML、js、ajax、数据库

html&JavaScript&ajax部分 1. 判断第二个日期比第一个日期大 如何用脚本判断用户输入的的字符串是下面的时间格式2004-11-21必须要保证用户的输入是此格...
  • Michael_HM
  • Michael_HM
  • 2017年06月22日 20:53
  • 431
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:说说MTK的EntryNewScreen函数和一个Bug
举报原因:
原因补充:

(最多只允许输入30个字)