说说MTK的EntryNewScreen函数和一个Bug
来源:互联网 发布:adobe 软件 ico图标 编辑:程序博客网 时间:2024/06/05 22:52
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的EntryNewScreen函数和一个Bug
- MTK平台学习--History管理机制与EntryNewScreen函数的关系
- History管理机制与EntryNewScreen函数的关系
- MTK中EntryNewScreen进入新屏幕和GoBackHistory返回原屏幕机制
- MTK 和时间相关的两个函数
- 和一个BUG的战斗
- History管理机制与EntryNewScreen的关系
- 微软实现字符串函数的一个BUG
- 一个由sscanf函数引起的bug
- OpenCV中函数cvEstimateObsProb的一个bug
- OpenCV中函数cvEstimateObsProb的一个bug
- PHP函数strip_tags的一个bug浅析
- 说说两个ie下的bug
- 说说分析bug的一些心得
- 说说这阵子遇到的烦人bug
- 说说mycat的排序机制bug
- 说说异或运算^和它的一个常用作用
- MTK的层和它的一些层函数
- 什么人算是程序员??
- 坚持和良好心态近乎道
- Richard Feynman, 挑战者号, 软件工程
- 一些重要的算法
- 批量删除编译器产生目标文件
- 说说MTK的EntryNewScreen函数和一个Bug
- windows7C盘减少,瘦身
- Android 调试桥(adb)常用命令详解(转)
- 关于用Android的API重写drawRegion方法的代码
- 线程池与工作队列
- [陆续更新] IPhone中编译Ogre源码及使用
- install VLC media player for Fedora
- install stardict on fedora12
- Mongodb在Linux下安装及配置