手机中的屏幕流程都是顺序的,用户都是通过按键在屏幕之间切换。这里有三种类型的屏幕切换,即
1 向前移动 向下一个屏幕的切换作为用户按键输入的结果。
2 向后移动 向前一个屏幕的切换作为用户按键输入的结果。
3 异步事件的出现 屏幕向前或者向后切换依赖于异步事件例如协议事件?
在向前切换的过程中,在绘制新的屏幕之前,先前屏幕的内容被存储在history“数据库”中。如果当前
的屏幕用于接收用户的输入,而此时一个异步事件发生例如来电,那么当前用户输入内容的缓冲区将会被存在history中,当前屏幕就会显示当前事件屏幕,直到该事件完成才恢复先前的屏幕。
History的实现类似一个栈。一个新的history节点添加在这个栈的顶端。每一个history节点的机构如下
typedef struct _history
{
U16 scrn /* 将要存储的屏幕ID*/
FuncPtr entryFuncPtr; /* 入口函数指针,用于恢复屏幕时的重绘*/
U8 inputBuffer[MAX_INPUT_BUFFER]; /* 用于存储当前的input缓冲区*/
U8 guiBuffer[MAX_GUI_BUFFER]; /* 存储gui,一些图片数据*/
}
void AddHistory(history addHistory) 添加history到这个history数据栈。
包含头文件:FrameworkStruct.h
void DeleteNHistory(U16 DeleteCount) 从history数据栈中删除history节点
包含头文件:HistoryGprot.h
void GoBackHistory(void) 该函数删除history数据栈中的顶端节点并且执行该顶端节点的入口函数,重绘该顶端节点所关联的屏幕。(该顶端节点其实就是当前屏幕的前一个屏幕?)
包含头文件:HistoryGprot.h
U8 GetHistory(U16 ScreenID,history *ptrHistory)
U8 GoBackToHistory(U16 ScreenID)该函数删除所有的history节点,并且执行该ScreenID所指屏幕的入口函数
U8* GetCurrGuiBuffer(U16 ScreenID)该函数用于从传入参数ScreenID所联系的屏幕中获得Gui缓冲区内容。
分享到:
相关推荐
MTK屏幕入栈与出栈的管理主要涉及的是在设备操作系统的用户界面中,如何从一个屏幕(界面)平滑地过渡到另一个屏幕,并在需要时返回到之前的屏幕。这一过程通常涉及到屏幕栈(history stack)的概念,它是一种用于...
在MTK(MediaTek)操作系统环境中,History管理是一项重要的功能,它主要用于维持应用界面的状态连续性,确保用户在不同屏幕间切换时能够获得一致的体验。History管理通过记录每个屏幕的状态信息并在用户返回时恢复...
"mtk_screen_history.doc"文件很可能是详细阐述MTK屏幕历史管理流程和技术实现的文档,包括具体的API调用、系统接口设计、性能指标等,供开发者理解和优化相关功能。 7. **实际应用**: 对于开发者来说,理解MTK...
MTK平台的历史管理机制,就是针对这些屏幕切换和图形缓冲操作的优化策略。它可能包括缓存管理、预加载机制、内存池分配等技术,目的是为了更高效地利用系统资源,提供更流畅的多任务和多屏幕操作体验。例如,通过预...
### History管理机制与EntryNewScreen的关系 在MTK平台中,`History`管理机制与`EntryNewScreen`之间存在着紧密的联系。为了更好地理解这两者之间的关系,我们需要深入探讨其内部工作原理及其交互过程。 #### ...
#### 一、History管理机制 在MTK平台上,为了更好地管理屏幕之间的切换以及维护历史记录,引入了`History`机制。此机制主要通过一系列的数据结构和函数来实现。其中最核心的部分在于记录当前屏幕的状态信息,以便于...
MTK平台中用于历史管理的关键数据结构是`history`类型,其定义如下: ```c typedef struct _history { U16 scrnID; // 窗口ID,标识特定的屏幕或界面 FuncPtr entryFuncPtr; // 进入窗口时调用的函数指针 U8 ...
MTK屏幕历史管理涉及到以下几个关键知识点: 1. **Activity生命周期**:每个Activity都有其特定的生命周期,包括onCreate(), onStart(), onResume(), onPause(), onStop()和onDestroy()等方法。这些方法在Activity...
8. **MTK History 机制**:10A 的屏幕架构转变为树形结构,每个应用有自己的主Group,下含子Group和屏幕。进入新屏幕不再是简单的栈操作,而是创建新Group并将其连接到现有Group的子Group尾部,同时处理历史记录。...
MTK电话薄中所用到的数据结构及其在电话薄中的...History管理机制.pdf MTK_MakeBuild_Design_Customer.pdf API+For+Writing+Applications+Using+Pixtel+MMI+Platform.pdf MTK主要Perl脚本的介绍 MTK程序编译方法.doc
#### 三、MTK中的History管理机制 MTK系统采用了一种名为“History”的管理机制来处理不同屏幕之间的切换。这一机制的核心在于将前一个屏幕的状态保存下来,以便用户可以通过返回按钮回到之前的屏幕。 - **入栈...
【MTK_10a新体系】主要涵盖了多个方面的改进,着重强调了事件处理、回调管理、屏幕组机制、资源管理、按键处理、屏幕刷新机制以及历史管理等关键点。 一、事件机制 MTK 10A引入了新的事件处理机制,包括`MMI_FRM_...
- **History API**: 管理历史记录。 - **Queue API**: 创建、写入和读取队列的操作接口。 - **创建队列**: `oslMsgqidOslIntCreateMsgQ(PS8 queue_name, U32 max_msg_size, U32 max_msgs)` - **写入队列**: `...
- History API: 用于处理历史记录的管理。 - Queue API: 包括创建队列、写入队列和读取队列的函数,用于系统内部的数据通信。 9. **UI层的功能**: - 窗口函数: 如显示、退出窗口,获取历史记录的大小和内容。 -...
`MTK-call history operate`和`MTK-data security and call log`可能涵盖了通话历史管理和数据安全的相关内容。了解如何存储和检索通话记录,以及如何保护用户的隐私和数据安全,对于构建符合用户需求的MMI至关重要...
- **History API**:用于处理历史记录相关的功能。 - **Queue API**: - **创建队列**:`oslMsgqidOslIntCreateMsgQ`函数用于创建一个新的消息队列。 - **写入队列**:`OSLSTATUSOslIntWriteMsgQ`函数用于向已...
History功能是MTK平台上处理屏幕切换的重要机制。它采用栈的结构来保存屏幕的历史记录,以便在接收到异步事件(如来电)时,能够暂时切换到新屏幕并恢复之前的屏幕内容。结构体`_history`定义了每个历史节点的组成...
History管理着用户的历史操作,例如浏览历史、应用历史等,帮助用户快速回到之前的状态。在MTK架构中,这部分可能涉及到对内存管理和性能优化的需求。 5. **按键相关**: 对于按键响应,MTK架构需要确保每个按键...
### MTK UI方面的知识...通过以上的详细介绍,我们可以看到CategoryScreen在MTK系统中扮演着非常重要的角色,不仅管理着不同屏幕间的切换,而且还处理屏幕状态的变化和历史记录,为用户提供更加丰富和流畅的交互体验。