电量优化
目录
电量查询 SQL
1. 查看系统的总电量消耗
SELECT
datetime(timestamp, 'unixepoch', 'localtime') AS time,
timestamp,
Level,
RawLevel,
Voltage,
InstantAmperage,
AppleRawCurrentCapacity
FROM PLBatteryAgent_EventBackward_Battery
WHERE timestamp > 1604551890;
字段说明:
AppleRawCurrentCapacity:电池当前剩余容量InstantAmperage:实时电流
2. 查看 Node ID
Meeting:
SELECT *
FROM PLAccountingOperator_EventNone_Nodes
WHERE name = "com.tencent.meeting.db.haven";
结果:10204
Zoom:
SELECT *
FROM PLAccountingOperator_EventNone_Nodes
WHERE name = "us.zoom.videomeetings.yunshipin";
3. 按模块汇总
Meeting 应用:
SELECT
datetime(timestamp, 'unixepoch', 'localtime') AS time,
*,
(SELECT Name FROM PLAccountingOperator_EventNone_Nodes WHERE ID = PLAccountingOperator_Aggregate_RootNodeEnergy.NodeID) AS appname,
(SELECT Name FROM PLAccountingOperator_EventNone_Nodes WHERE ID = PLAccountingOperator_Aggregate_RootNodeEnergy.RootNodeID) AS typename
FROM PLAccountingOperator_Aggregate_RootNodeEnergy
WHERE NodeID = (SELECT ID FROM PLAccountingOperator_EventNone_Nodes WHERE Name = 'com.tencent.meeting.db.haven')
ORDER BY time;
Zoom 应用(yunshipin):
SELECT
datetime(timestamp, 'unixepoch', 'localtime') AS time,
*,
(SELECT Name FROM PLAccountingOperator_EventNone_Nodes WHERE ID = PLAccountingOperator_Aggregate_RootNodeEnergy.NodeID) AS appname,
(SELECT Name FROM PLAccountingOperator_EventNone_Nodes WHERE ID = PLAccountingOperator_Aggregate_RootNodeEnergy.RootNodeID) AS typename
FROM PLAccountingOperator_Aggregate_RootNodeEnergy
WHERE NodeID = (SELECT ID FROM PLAccountingOperator_EventNone_Nodes WHERE Name = 'us.zoom.videomeetings.yunshipin')
ORDER BY time;
Zoom 应用:
SELECT
datetime(timestamp, 'unixepoch', 'localtime') AS time,
*,
(SELECT Name FROM PLAccountingOperator_EventNone_Nodes WHERE ID = PLAccountingOperator_Aggregate_RootNodeEnergy.NodeID) AS appname,
(SELECT Name FROM PLAccountingOperator_EventNone_Nodes WHERE ID = PLAccountingOperator_Aggregate_RootNodeEnergy.RootNodeID) AS typename
FROM PLAccountingOperator_Aggregate_RootNodeEnergy
WHERE NodeID = (SELECT ID FROM PLAccountingOperator_EventNone_Nodes WHERE Name = 'us.zoom.videomeetings')
ORDER BY time;
按时间戳和 RootNodeID 查询:
SELECT
datetime(t1.timestamp, 'unixepoch', 'localtime') AS time,
*
FROM
(
SELECT *
FROM PLAccountingOperator_Aggregate_RootNodeEnergy
WHERE timestamp = 1604484033 AND RootNodeID = 11
) AS t1
INNER JOIN PLAccountingOperator_EventNone_Nodes AS t2
ON t1.NodeId = t2.ID;
注意事项
- 数据输出延迟:延迟一个小时,只能按小时统计
- 应用标识:
- Meeting:
com.tencent.meeting.db.haven - Zoom:
us.zoom.videomeetings.yunshipin
测试方法
原始方法
步骤:
- 保持实验前置条件一致(手机当前电量)
- 测试半个小时
- 记录实验后的手机当前电量
优点: 简单
缺点: 需要人工参与,精准性不高,无法按模块区分耗电量
Instruments Energy Log
优点: 可以看出各个模块的能耗消耗等级和时长
缺点: 模块耗电量未知
系统诊断 – 苹果电池诊断
日志开启
- 下载 profile(有效期 7 天),并安装到 iOS 设备,使用 AirDrop 传递到电脑
- 同步日志信息到电脑(同步之前不要重启设备)
- 复现问题,并记录问题出现的日期和时间
- 再次同步信息到电脑
- macOS 日志位置:
~/Library/Logs/CrashReporter/MobileDevice/[Your_Device_Name]/(同步手机信息到电脑) - iOS:
Settings.app > Privacy > Analytics > Analytics Data >(定位 sysdiagnose 文件并通过 AirDrop 发送到 Mac) - Windows 10:
C:\Users\USERID\AppData\Local\Packages\AppleInc.iTunes_devicename\LocalCache\Roaming\AppleComputer\Logs\CrashReporter\MobileDevice\[Your_Device_Name]/DiagnosticLogs/
日志关闭
- 移除 profile
- 重启设备
电量计算
- 额定容量 × 额定电压 = 额定电量
- 单位运算:
mAH × V = mWH - Energy:mWH,不需要充电,可以连续测试
- iPhone 6s 电池容量:1715 mAh
优化方向
- 网络:优化网络请求频率和策略
- 定位:减少定位服务的使用频率
- 其他:(待补充)
