稳定性问题简述

Android 的稳定性是 Android 性能的一个重要指标,它也是 App 质量构建体系中最基本和最关键的一环;如果应用经常崩溃,或者关键功能不可用,那显然会对我们的留存产生重大影响

所以为了保障应用的稳定性,我们首先应该树立对稳定性的正确认识

从表现来看有:

等等情况

android 当前环境不支持(浅析Android系统稳定性中应用程序)(1)

这也就说明了稳定性问题比较杂,且很多是概率性问题,没有统一处理方式需要针对具体的问题,具体分析

一般来说:必现的问题较易解决,针对当前代码添加各种调试 log ,一步步 debug 去定位,过程虽然可能慢点,但一般都会解决

针对偶发性概率问题,则较为麻烦,依赖于大量的测试复现,然后统计 分析当前抓取到的 events 、system 等 log 中,找到复现的步骤,然后去定位;且针对与这种概率问题,最好能够拿到当时的现场,所以有时候需要将 tombstone 或者 ANR 、crash 转为 ANR 去处理

从技术层面来划分:

无外乎两大类:长时间无法执行完成(Timeout) 以及异常崩溃(crash). 主要分类如下所示:

接下来我们细说一下 ANR

应用程序无响应即 Application not Responding ,简称“无响应”或 “ANR”

为什么会有 ANR?

如上所述,ANR 的产生需要同时满足三个条件

ANR 机制本身就是为了防止差的用户体检,是完全 Android 系统工程师为大家埋下的雷;这个既然是工程师设计的,那就可以被工程师控制

现在好多平台 cpu 都是多核cpu 达到 100%不能说明就是系统卡顿导致的 ANR

还要说明,系统 ANR in 往往比 event log 中的 am_anr很多;具体慢多少需要根据场景而定,所以建议以 event log 中的 am_anr 作为时间窗口起点比较好

android 当前环境不支持(浅析Android系统稳定性中应用程序)(2)

那ANR in 能看到哪些信息呢?那如何证明系统卡顿导致的 ANR 呢?

如果是由系统引起的卡顿event log 中搜索dvm_lock_sample,因为往往在系统卡顿的时候 dvm_lock_sample 会打印出系统主线程的一些主要方法耗费了多少时间

今天关于 ANR 的相关技术知识点就分享到这里了;关于 ANR 的技术问题,我们还要去好好的学习剖析;因此我把工作中遇到的性能卡顿问题,以及对网上大部分的资料的收集和整理,最终整合出了一份 《Android 高工必备性能优化》学习文档,有需要这份文档的朋友,可以 私信 发送 “进阶” 即可 免费获取

内容展示如下:

Android 高工必备性能优化 目录:

android 当前环境不支持(浅析Android系统稳定性中应用程序)(3)

UI 布局优化

android 当前环境不支持(浅析Android系统稳定性中应用程序)(4)

完整版 Android 高工必备性能优化学习文档获取方式:可以 私信发送 “进阶”即可 免费获取卡顿优化和布局优化

android 当前环境不支持(浅析Android系统稳定性中应用程序)(5)

崩溃优化

android 当前环境不支持(浅析Android系统稳定性中应用程序)(6)

完整版 Android 高工必备性能优化学习文档获取方式:可以 私信发送 “进阶”即可 免费获取网络优化

android 当前环境不支持(浅析Android系统稳定性中应用程序)(7)

储存优化

android 当前环境不支持(浅析Android系统稳定性中应用程序)(8)

由于篇幅有限,资料就不做完全展示了;有需要这份《Android 高工必备性能优化》 学习文档 的朋友,可以 私信 发送 “进阶” 即可 免费获取

技术是无止境的,你需要对自己提交的每一行代码、使用的每一个工具负责,不断挖掘其底层原理,才能使自己的技术升华到更高的层面

加油!各位 Android 开发者们

,