三星健康(Samsung Health)无需长期后台服务实现计步的原理是什么?
三星健康无长期后台服务的计步实现逻辑
- 依托硬件级低功耗运动处理单元
三星全系列机型都搭载了独立的Sensor Hub协处理器,和主CPU独立运行,功耗仅为主CPU的1/50不到。计步传感器的原始数据会直接传入该协处理器进行统计计算,全程不需要唤醒主CPU。三星健康仅需在系统层注册计步事件监听,协处理器统计的步数更新后会由系统主动回调给应用,不需要应用自身常驻后台运行服务。 - 预装应用的系统级权限支持
三星健康作为系统预装应用,持有普通第三方应用无法申请的特殊级活动识别权限,同时被加入系统电池优化白名单,不会被后台查杀策略清理,也无需挂载前台服务即可接收系统层面的运动数据回调,本身不需要长期持有运行资源。 - 系统缓存的被动同步机制
协处理器会持久化缓存开机以来的累计步数数据,三星健康不需要实时拉取数据,仅会通过系统JobScheduler定时任务每15~30分钟触发一次数据同步,同步过程仅需几百毫秒,完成后应用进程即可被系统正常回收,全程无长期后台服务占用。
普通第三方应用无需自行实现后台计步服务,可直接调用Android系统提供的
Sensor.TYPE_STEP_COUNTER硬件传感器API,该传感器返回的是设备开机以来的累计步数,由协处理器全局统计,即使应用完全被杀死,下次启动时读取最新累计值与本地存储的历史累计值做差值,即可得到离线阶段的步数数据,整体功耗<1mAh/天,完全不需要后台进程驻留。
内容的提问来源于stack exchange,提问作者Guellaf Abd ELhalim
相关产品推荐
相关产品推荐

