性能优化
文章平均质量分 94
麦田里的守望者-Jiang
No pains no gains!
展开
-
Android ANR 触发原理
ANR 简介ANR(Application Not Responding):程序无响应。在Android应用程序的主线程中,如果某个事件没有在系统规定的时间范围内执行完成,就会触发ANR。通常,ANR 会对用户的体验会产生致命的影响,因为当发生ANR时,用户不能再与应用程序进行交互。所以,我们也会统计应用程序的线上ANR率,以此来衡量一个应用程序的稳定性。ANR率 是应用程序的一个非常重要的性能指标。解决ANR是一个重要紧急的事情。ANR 触发场景在Android 系统中,触发ANR的事件场景通常有原创 2020-11-16 17:12:18 · 2032 阅读 · 0 评论 -
Android性能优化-过度渲染
过度渲染去除过度渲染可以从下面渲染阶段的几方面入手:交换缓冲区阶段,表示 CPU 等待 GPU 完成其工作的时间。 如果此竖条升高,则表示应用在 GPU 上执行太多工作。命令问题阶段, 表示 Android 的 2D 渲染器向 OpenGL 发起绘制和重新绘制显示列表的命令所花的时间。 此竖条的高度与它执行每个显示列表所花的时间的总和成正比—显示列表越多,红色条就越高。同步和上传阶段,表...原创 2018-11-19 15:31:46 · 2181 阅读 · 0 评论 -
Android性能优化-方法耗时
原创 2018-11-19 15:33:31 · 10978 阅读 · 0 评论 -
Android性能优化-过度绘制
优化背景之前我们的项目开发周期,从两周发一个版本,变成一周发一版本,这种快速迭代的节奏持续了将近一年。平时开发,重心都放在了业务之上,很难有很多的时间去分析一些复杂业务多带来的性能问题,导致代码越来越沉重(比如:一个Fragment页面的代码到了3千多行。),而且页面渲染时间和帧率都大大下降,出现卡顿,严重影响用户的体验。当时这种问题已经发展到了很严重的地步,如果再一直这样持续下去,将可能导致用...原创 2018-11-09 14:38:41 · 930 阅读 · 0 评论 -
为什么使用LeakCanary检测内存泄漏?
内存泄漏原因不再需要的对象依然被引用,导致对象被分配的内存无法被回收,这就是内存泄漏的原因。原创 2018-11-03 18:19:31 · 2047 阅读 · 0 评论 -
如何优雅的检测主线程中的耗时方法
应用程序卡顿原因在Android应用程序中,运行着一个主线程,也被称为UI线程,它处理界面交互的相关的逻辑。四大基本组件以及各种控件都运行在这个线程中,如果在这个线程中做耗时的操作,就容易引起页面卡顿,也就是掉帧,甚至引起用户最不想看到的ANR。在Android系统中,想要应用程序画面达到流畅,就必须是60fps。系统每隔16ms发出VSYNC信号,触发对UI进行渲染,要达到60fps,意...原创 2019-05-22 23:21:22 · 8400 阅读 · 4 评论 -
使用对象池Pools
使用对象池原因在应用程序中,我们通常会频繁的使用一些对象,比如:StringBuilder,SpareArray,HashMap等。这些对象只在方法内使用,也是一些小对象。它们临时创建,即使销毁,生命周期非常短暂,可以说朝生夕死。但当使用这些对象的地方很多,频繁的创建和销毁对象,对应的是虚拟机频繁的分配对象内存和回收对象内存,这会成为一件消耗性能的事。对象池Pools在Android ...原创 2018-05-11 21:55:06 · 897 阅读 · 0 评论 -
关于过度绘制和渲染的介绍
1.引起卡顿的原因在Android中,UI渲染太慢和过度绘制是造成卡顿的主要原因。关于UI渲染: Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fps,这意味着程序的大多数操作都必须在16ms内完成。那么,如果每一帧的渲染时间超过了16ms,就会产生丢帧,导致卡顿现象。在A...翻译 2017-11-05 20:31:21 · 4159 阅读 · 0 评论