说起卡顿,很多人都能说出个123:
主要是主线程阻塞。在开发过程中,遇到的造成主线程阻塞的原因可能是:
主线程在进行大量I/O操作:为了方便代码编写,直接在主线程去写入大量数据
主线程在进行大量计算:代码编写不合理,主线程进行复杂计算
大量UI绘制:界面过于复杂,UI绘制需要大量时间
主线程在等锁:主线程需要获得锁A,但是当前某个子线程持有这个锁A,导致主线程不得不等待子线程完成任务。
......
卡顿是用户可以直观感受到的,但开发者如果想要揪出导致卡顿的元凶,这个过程往往都比较曲折。很多卡顿非常狡猾,例如不可重现的卡顿,经常出现在用户的使用过程中,这种卡顿往往跟机器性能,手机环境,甚至是操作偏好等因素息息相关。我们平时从用户反馈的“好卡呀”这种描述中很难直接洞察到卡顿的根源。甚至有些连卡顿的场景都不知道,很难准确重现,所以这种卡顿容易让人摸不着头脑。
而内存作为程序运行最重要的资源之一,需要运行过程中做到合理的资源分配与回收,不合理的内存占用轻则使得用户应用程序运行卡顿、ANR、黑屏,重则导致用户应用程序发生 OOM(out of memory)崩溃。我们需要在各种机器资源上保持优秀的流畅性和稳定性,相比UI界面优化、电量优化等,内存优化才是性能优化中的命门所在。
为了帮助大家更好地掌握性能优化技能,早日成功拥抱高薪,在这里给大家分享一份腾讯大佬历时三个月整理出来的《Android性能优化-大厂实战全解析》,我们可以看下已经在大厂中的开发者,对于性能优化有着怎样的心得:
字节跳动技术团队— 深入理解Gradle框架之一:Plugin,Extension, buildSrc
字节跳动技术团队—深入理解gradle框架之二:依赖实现分析
字节跳动技术团队—Scene:Android 开源页面导航和组合框架
字节跳动技术团队—AwCookieManager.nativeGetCookiecrash 排查
字节跳动技术团队—另类 BadTokenException 问题分析和解决
字节跳动技术团队—抖音包大小优化-资源优化
字节跳动技术团队—二维码扫描优化
字节跳动—Android Camera内存问题剖析
抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少80%
抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少80%(二)
抖音 Android 性能优化系列:Java 内存优化篇
今日头条 Android ‘秒’ 级编译速度优化
......
支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
支付宝 App 构建优化解析:通过安装包重排布优化 Android 端启动性能
支付宝 App 构建优化解析:Android 包大小极致压缩
解决支付宝包体积优化的遗留问题:运行时获取dexpc
闲鱼技术—曾梦想 if-else 走天涯?看看“责任树模式”优化
闲鱼如何在2个月内实现Android启动速度翻倍的?
高德技术—Android Native 内存泄漏系统化解决方案
天猫精灵技术—史上最全Android渲染机制讲解(长文源码深度剖析)
......
百度APP-Android H5首屏优化实践
百度App技术—一种简单优雅的TextView行间距适配方案
百度App技术—Android 10分区存储介绍及百度APP适配实践
百度App技术—Gradle 与 Android 构建入门
百度App组件化之路
百度App网络深度优化系列《三》弱网优化
......
网易新闻客户端 H5 秒开优化
网易新闻构建优化:如何让你的构建速度“势如闪电”
网易传媒技术团队—AOP技术在客户端的应用与实践
网易大数据|互联网产品决策秘笈: AB测试
......
扫码即可领取