通用 Windows 应用应在所有设备系列中一致地执行。 在电池供电的设备上,能耗是用户对应用的整体体验的关键因素。 全天电池使用时间是每个用户所需的功能,但它需要设备上安装的所有软件(包括你自己的软件)的效率。
后台任务行为可以说是应用总能源成本中最重要的因素。 后台任务是在未打开应用的情况下向系统注册的任何程序活动。 有关详细信息,请参阅 “创建和注册进程外后台任务 ”。
后台活动权限
在运行 Windows 10 版本 1607 或更高版本的桌面和移动设备上,用户可以在 Windows 设置的“电池使用方式应用”中查看其“电池使用情况”。 在这里,他们将看到一个应用列表以及每个应用已消耗的电池电量百分比(超出自上次充电以来已使用的电池使用量)。 对于此列表中的 UWP 应用,用户可以选择该应用以打开与后台活动相关的控件。
移动设备上的后台权限
在移动设备上,用户会看到一个单选按钮列表,用于指定该应用的后台任务权限设置。 后台活动可以设置为“始终允许”、“不允许”或“由 Windows 管理”,这意味着应用的背景活动由系统根据多种因素进行监管。
桌面上的后台权限
在桌面设备上,“由 Windows 管理”设置显示为切换开关,默认设置为 “开 ”。 如果用户切换到 “关闭”,则会显示一个复选框,可以手动定义后台活动权限。 选中该框后,将允许应用随时运行后台任务。 取消选中该框后,将禁用后台活动。
在应用中,可以使用调用 BackgroundExecutionManager.RequestAccessAsync() 方法返回的 BackgroundAccessStatus 枚举值来确定其当前的后台活动权限设置。
也就是说,如果你的应用不实施负责任的后台活动管理,则用户可能会完全拒绝对应用的背景权限,这对任一方来说都不可取。 如果你的应用被拒绝了在后台运行的权限,但需要后台活动才能完成用户的操作,你可以通知用户并将他们指向 Windows 设置。 这可以通过 “启动 Windows 设置 ”到“后台应用”或“电池使用情况详细信息”页来完成。
使用电池节电模式
节电器是用户可以在“设置”中配置的系统级功能。 当电池电量低于用户定义的阈值时,它会切断所有应用的后台活动,但已设置为“始终允许”的应用的后台活动 除外 。
通过引用 PowerManager.EnergySaverStatus 属性,从应用中检查节电模式的状态。 它是一个枚举值: EnergySaverStatus.Disabled、 EnergySaverStatus.Off 或 EnergySaverStatus.On。 如果你的应用需要后台活动,并且未设置为“始终允许”,则它应通过通知用户,告知给定的后台任务在电池节能模式关闭之前不会运行,来处理EnergySaverStatus.On。 虽然后台活动管理是节电器功能的主要用途,但应用可以在节电时进一步调整以进一步节省能源。 如果节电模式处于打开状态,你的应用可能会减少动画的使用、停止位置轮询或延迟同步和备份。
进一步优化后台任务
以下是在注册后台任务时可以采取的其他步骤,使其更具电池效率。
使用维护触发器
可以使用 MaintenanceTrigger 对象而不是 SystemTrigger 对象来确定后台任务何时启动。 仅当设备连接到 AC 电源时,使用维护触发器的任务才会运行,并且允许它们运行更长时间。 请参阅 使用维护触发器 以获取说明。
使用 BackgroundWorkCostNotHigh 系统条件类型
必须满足系统条件才能运行后台任务(有关详细信息,请参阅 设置运行后台任务的条件 )。 后台工作成本是表示运行后台任务的 相对 能量影响的度量值。 当设备插入交流电源时运行的任务将被标记为 低 (对电池的影响很少/没有影响)。 当设备处于电池供电状态且屏幕关闭时运行的任务标记为 高 ,因为当时设备上运行的程序活动可能很少,因此后台任务将产生更大的相对成本。 当设备处于电池供电状态且屏幕打开时运行的任务被标记为中等,因为大概已经有一些程序活动正在运行,后台任务会增加一点能源成本。 BackgroundWorkCostNotHigh 系统条件仅会延迟任务的运行,直到屏幕亮起或设备连接到 AC 电源。
测试电池效率
请务必在实际设备上测试应用,以识别任何高耗能场景。 最好在许多不同的设备上测试应用,在不同网络强度的环境中打开和关闭节电模式。