Skip to content

Latest commit

 

History

History
21 lines (18 loc) · 3.54 KB

6_5_4_ApplicationLevelOptimization.md

File metadata and controls

21 lines (18 loc) · 3.54 KB

应用级优化

为了支持移动计算设备中的众多功能,使用了多个传感器。 因此,现代的平台包括光传感器,陀螺仪,加速度计,GPS接收器和近场通信。 通过了解在给定的时间可能有多个传感器处于活动状态的可用系统资源和用户环境,应用程序可以帮助避免电源滥用,并可以帮助用户确定电源不足情况下传感器和功能部件的优先级。

应用程序的上下文意识

编写错误的应用程序可能会不必要地消耗功率,而这些功率否则可以节省。另一方面,如果应用程序知道其运行的系统资源,并且可以感知系统资源可用性的变化,则该应用程序可能以友好的方式对总体功耗做出反应。例如,在检测到电池电量低并随后通知用户时,应用程序可以在进入低功耗状态之前等待用户的干预。或者,在更主动的响应中,它可能会在检测到较暗的环境光条件后默认使显示器变暗。 操作系统有责任按照应用程序的要求为每个应用程序分配系统资源。该应用程序注册的电源相关事件使操作系统可以将电源事件通知应用程序,从而使应用程序能够做出适当的响应。应用程序还可以使用操作系统提供的API(应用程序编程接口)来查询系统状态信息。例如,取决于系统是否由电池供电或连接到交流壁式电源,应用程序可以使各种 节电决策: •病毒检查程序可能会开始使用电池电源对系统进行部分扫描,而不是使用交流电源进行完整的系统扫描。 •媒体播放器可能会决定权衡视频质量,以延长蓝光电影的播放时间。 •游戏应用程序可以选择牺牲一些特殊效果来容纳游戏的更多部分。 在Windows中,应用程序可以使用称为GUID_ACDC_POWER_SOURCE的唯一GUID(全局唯一标识符)查询操作系统,以获取电源设置信息,并在发生电源事件时使用此知识。同样,要确定电池的剩余容量,可以使用GUID_BATTERY_CAPACITY_REMAINING。要了解当前的电源策略,可以使用GUID_POWERSCHEME_PERSONALITY。也可以使用GUID_BACKGROUND_TASK_NOTIFICATION来确定是否适合在当前状态下运行后台任务,或者最好等待活动状态以免干扰空闲状态。在Linux中,也存在类似的方法,其中CCBatteryInfo结构可用于确定电池状态。此外,如果应用程序切换了上下文,则可以降低不再运行的应用程序上下文的功耗。

寻求用户干预的应用

应用程序可能会邀请用户进行干预以节省电量。例如:

  • 应用程序可以监视电池容量,并且当电池电量下降到其容量的某个分数时-例如,50%或25%-应用程序可能会在用户界面上显示警告,以警告用户剩余电池电量。
  • 应用程序可以通过将更改通知用户并提供使显示屏变暗的选项来响应电源从交流到直流的变化。
  • 应用程序可以响应环境光水平,并要求用户调整显示器的亮度。 这些动作中的某些动作也可以由系统自动执行,但是取决于应用程序,有些动作可能需要用户干预。通常,用户可配置的选项允许用户个性化系统,应用程序和体验。系统和应用程序设计人员在决定要给用户的选择以及默认实现的选择时可能需要考虑各种折衷。例如,Windows为用户提供了三种电源策略供您选择或定义 自己的设置。这些选项和设置会驱动系统级行为,从而严重影响平台的电源效率。