钉钉 Android 端功耗优化最佳实践(下)

简介: 钉钉 Android 端功耗优化最佳实践(下)

更多精彩内容,欢迎观看:

钉钉 Android 端功耗优化最佳实践(中):https://developer.aliyun.com/article/1262697?groupCode=alibabaf2e


防劣化能力

如前文所说,不同于 Crash、ANR 等问题,耗电量在线上是没有一个可以量化的指标的,所以线上用户功耗体验如何,我们的优化是否有效果,是否解决了用户反馈的功耗问题,有无新增的功耗问题等,从应用治理的视角来看,监控能力是防劣化的有效手段。

主要策略

建立线上功耗体验指标体系

由于 App 获取不到直接的电量值,需要有一个指标去量化衡量整体的线上功耗体验,代替电量值这个指标。且功耗涉及多个模块的使用,在我们有了各个功耗部件的使用数据之后,这个指标还需要是一个综合指标。鉴于此,我们提出了功耗健康分的指标,用于衡量一次退后台的生命周期内功耗体验整体优劣情况。

功耗健康分:对一条退后台数据,对各个单项指标进行评分,再以各个模块使用对功耗的影响程度转换为权重系数求和相加得到健康分。

健康分计算:

建设功耗体验报表:感知功耗体验核心指标的优劣和变化趋势。主要包含三个部分:功耗健康分、异常功耗、功耗部件单项指标。

  1. 功耗健康分:归一化各个功耗部件的使用情况进行健康分评估,反映钉钉后台整体的功耗体验;
  2. 异常功耗:反映各类功耗异常的总数和异常率的变化,以及每一类异常的主要归因;
  3. 功耗部件单项指标:反映钉钉后台各个功耗部分上详细的使用情况。

因此,对于钉钉线上功耗体验,有了明确的数据指标衡量体系,能够量化地感知功耗体验和异常问题。不再是依赖用户反馈或者主观使用感受。通过线上功耗体验指标,曾有效地帮我们感知到线上变更引起的高功耗问题;也用于整体衡量我们每个迭代功耗治理优化的效果。

功耗治理实践

基于功耗的监控感知能力,上线后帮助我们累计发现数十例潜在功耗问题,根据问题的严重程度我们依次进行了优化治理。

治理策略

功耗的优化治理,主要是两方面的工作。首先,针对后台重度消息收发引起的网络频繁使用问题,我们研发了“低功耗模式”。同时,在每个迭代中,针对各个功耗模块潜在的问题进行治理。

低功耗模式

针对重度消息收发场景引起的网络频繁唤醒问题,我们研发了“低功耗模式”。

低功耗模式主要思想是将消息进行分层,当 App 处于后台的情况下,服务端采用分级、延迟、合并等推送策略,有效解决网络唤醒频繁的问题。

  1. 当 App 处于后台时对于低优先级事件(如免打扰消息)不进行推送。
  2. 用户设置低功耗模式后,App 处于后台时:
    对于中优先级事件(如普通群消息),按用户设定的时间间隔进行延迟合并推送。
    对于高优先级事件(如单聊、VIP 消息),立即推送,且合并未推送的中优先级事件推送。

经过验证,低功耗模式开启后,能有效降低重度用户后台耗电量近 70%。

功耗问题治理

在日常迭代中,持续去对潜在功耗问题进行治理和优化。主要问题分为这几类:

  1. 后台网络异常频繁收发治理:优化后台异常的、不必要的频繁网络收发;智能心跳优化等。
  2. 后台系统服务调用治理:Alarm 频繁唤醒问题,长期持有亮屏唤醒锁阻止系统休眠问题治理,长期持有部分唤醒锁阻止系统休眠问题治理,蓝牙频繁扫描等。
  3. 应用后台自启动优化:进程异常频繁自杀问题,优化粘性 Service 自启动以及子进程跨进程调用拉起主进程行为。
  4. CPU 高负载场景治理等:长耗时线程优化、动画泄露治理、死循环治理等。

治理效果

通过对感知到的头部问题治理后,线上功耗体验也有明显的效果体现:

  1. 异常次数/异常率:功耗异常总数和功耗异常率下降 50% 以上
  2. 功耗健康分:整体功耗健康分维持 99.9 以上(治理前在95分)
  3. 用户体验:用户舆情反馈得到明显收敛,有效提升用户体验
  4. 获得金标应用认证:通过金标联盟功耗标准基线测试

总结

在功耗体系化能力建设的同时,持续治理优化潜在的功耗问题,大幅提升用户体验,为用户提供低功耗的体验。未来我们还会不断精进优化 App 体验,持续为用户打造极致用户体验而努力。


相关文章
|
22小时前
|
移动开发 安全 Android开发
构建高效Android应用:采用Kotlin协程优化网络请求
【5月更文挑战第21天】 在移动开发领域,尤其是针对Android平台,网络请求的处理一直是影响应用性能和用户体验的关键因素。随着现代应用对实时性和响应速度要求的不断提高,传统的同步阻塞或异步回调模式已不再满足开发者的需求。本文将探讨利用Kotlin协程来简化Android应用中的网络请求处理,实现非阻塞的并发操作,并提升应用的整体性能和稳定性。我们将深入分析协程的原理,并通过一个实际案例展示如何在Android项目中集成和优化网络请求流程。
|
1天前
|
缓存 移动开发 Android开发
Android应用性能优化实践
【5月更文挑战第20天】 在移动开发领域,应用的性能直接关乎用户体验。特别是对于Android平台,由于设备多样性和应用生态环境的复杂性,性能优化成为了开发者必须面对的挑战。本文将深入探讨Android应用性能优化的多个方面,包括内存管理、UI渲染、多线程处理以及电池效率等,旨在为开发者提供一系列实用的优化策略和技巧。
|
1天前
|
缓存 编解码 移动开发
构建高效Android应用:从优化布局到提升性能
【5月更文挑战第20天】 在移动开发领域,一个流畅且响应迅速的应用是用户留存的关键。本文将深入探讨如何针对安卓平台优化应用性能,涵盖从布局优化、内存管理到多线程处理等多个方面。我们将通过实例和最佳实践指导开发者避免常见的性能陷阱,并利用现代安卓工具和技巧提高应用的整体效率。
|
4天前
|
缓存 程序员 定位技术
Android Studio 插件,那些被大厂优化的程序员们
Android Studio 插件,那些被大厂优化的程序员们
|
4天前
|
设计模式 算法 前端开发
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
|
5天前
|
移动开发 监控 Android开发
构建高效安卓应用:Kotlin 协程的实践与优化
【5月更文挑战第16天】 在移动开发领域,性能优化一直是开发者们追求的重要目标。特别是对于安卓平台来说,由于设备多样性和系统资源的限制,如何提升应用的响应性和流畅度成为了一个关键议题。近年来,Kotlin 语言因其简洁、安全和高效的特点,在安卓开发中得到了广泛的应用。其中,Kotlin 协程作为一种轻量级的并发解决方案,为异步编程提供了强大支持,成为提升安卓应用性能的有效手段。本文将深入探讨 Kotlin 协程在安卓开发中的应用实践,以及通过合理设计和使用协程来优化应用性能的策略。
18 8
|
6天前
|
缓存 移动开发 Android开发
Android 应用性能优化实践
【5月更文挑战第15天】 在移动开发领域,应用的性能直接关系到用户体验和产品的市场表现。特别是对于安卓平台,设备的多样性和应用生态环境的复杂性使得性能优化成为开发者的一项重要技能。本文将深入探讨针对安卓应用的性能瓶颈识别、分析方法以及具体的优化策略,旨在为开发者提供一套实用的性能提升解决方案。
|
存储 弹性计算 安全
成功案例-钉钉 | 学习笔记
快速学习 成功案例-钉钉
300 0
|
存储 弹性计算 安全
案例分享——钉钉|学习笔记
快速学习 案例分享——钉钉
279 0
|
移动开发 物联网 Go
SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例
SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例
SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例