挑战
确定在基于 Windows* 的移动应用中 PeekMessage 调用对电池寿命的影响并将其降至最低。 针对电池供电设备上运行的应用,当谈及其优化技术时,某些应用开发人员可能会怀疑或不理解为何需要考虑这一问题。
由于许多旧应用多年来大量使用 PeekMessage 作为消息循环的关键组件,因此解决应用中的电源问题就变得尤为重要。基本上,PeekMessage 调用使系统忙于检查消息而大量占用系统。
由于许多旧应用多年来大量使用 PeekMessage 作为消息循环的关键组件,因此解决应用中的电源问题就变得尤为重要。基本上,PeekMessage 调用使系统忙于检查消息而大量占用系统。
解决方案
注意电源提示,当程序空闲时启用适当的空闲状态。 可以编写应用使其更节能,允许 Windows 空闲,同时监视应用未处理消息处于空闲状态时的大致时间长度。鉴于合理使用 PeekMessage 存在一定困难,已经设计出处理 PeekMessage 潜在问题的备用方法。
直接控制应用中 PeekMessage 使用方式的一种方法是构建自己的消息循环。通过确保您已涵盖了 Microsoft 基本类* (MFC*) 主消息循环中的基本元素,您的应用可以直接控制消息泵。下面是兼容 MFC 的一个简短的伪代码样例:
直接控制应用中 PeekMessage 使用方式的一种方法是构建自己的消息循环。通过确保您已涵盖了 Microsoft 基本类* (MFC*) 主消息循环中的基本元素,您的应用可以直接控制消息泵。下面是兼容 MFC 的一个简短的伪代码样例:
在该代码中,只要存在正在进行的空闲处理,就会调用 PeekMessage。PumpMessage 用于执行正常消息转换和调度。使用该代码的问题在于 PumpMessage 调用。当该源代码可在 ThrdCore.cpp 中找到时,它未经正式归档,因此在以后的版本中可能会发生变化。
在循环中使用 PeekMessage 的问题在于 Windows 不能进入空闲状态。节能的应用会处理所有消息并进行后台处理,然后调用 WaitMessage 以进入睡眠状态,直至出现新消息。使用 WaitMessage 可释放系统从而处理其他任务:
在循环中使用 PeekMessage 的问题在于 Windows 不能进入空闲状态。节能的应用会处理所有消息并进行后台处理,然后调用 WaitMessage 以进入睡眠状态,直至出现新消息。使用 WaitMessage 可释放系统从而处理其他任务:
编写应用使其实现自行管理,如上面的伪代码所示,这有助于提高电池供电系统的电源使用。
本文探讨了在基于Windows的移动应用中PeekMessage调用对电池寿命的影响,并提出了解决方案。通过构建自定义消息循环并结合使用WaitMessage,使应用在处理完消息后能进入低功耗状态。
982

被折叠的 条评论
为什么被折叠?



