
Android性能优化
睡不着还起得早
从事软件开发数年,《程序员修炼之道》《人月神话》《JavaScript权威指南》《重构》《集体智慧编程》《HeadFirst设计模式》《EffectiveJava》》《JavaPerformance》《Java解惑》《HeadFirst面向对象的分析和设计》《ThinkinginJava》《Java核心技术(CoreJava)》《深入理解Java虚拟机》《数据结构和算法》《Android进阶指北》《Android进阶解密》《Android内核剖析》《最强Android书:架构大剖析》《Android系统源代码情景分析》《《高性能Android应用开发》《Android进阶之光》都没看过!
展开
-
Anroid性能优化之布局绘制
前提:界面绘制是一个IO过程,将资源映射到内存中,同时也是通过反射进行操作,这就导致速度变慢,如果布局不得当存在重绘或者层级过多,也会导致绘制变慢,因为绘制是一个自上而下的过程,层级太多那么时间就会变长。优化方式:1、使用AsyncLayoutInflater 异步加载,但是注意这个方式有些限制问题,比如:不能设置LayoutInflater.Factory,高低版本兼容,不能进行主线程操...原创 2019-07-05 09:12:34 · 622 阅读 · 0 评论 -
Android性能优化之获取界面绘制时间
两个目标:1、获取界面整体绘制时间。2、获取界面中每个控件的绘制时间。优化方向:选出界面绘制时间最长的,然后再根据控件绘制时间等进行优化。界面绘制时间获取方式,方法很多种,我这里用的是AOP模式,仅做参考。同时也可参照:https://blog.youkuaiyun.com/Hello___Sunshine/article/details/93629281第一步引入插件:depe...原创 2019-07-04 10:15:19 · 2800 阅读 · 0 评论 -
Android性能优化之线下监测
线下监测这里指的是我们在实际开发和测试中使用的手段。1、工具使用AS自带的Profiler。2、MAT。3、HOOK监测(https://blog.youkuaiyun.com/Hello___Sunshine/article/details/94396865)。其实1、2两个工具基本能满足我们的内存优化所需,3则是我们注入的自定义监测的。...原创 2019-07-03 14:08:19 · 674 阅读 · 0 评论 -
Andorid性能优化之线上监测
目前线上监测方式基本都是用的第三方的,如Bugly等,基本满足我们的要求。有没我们自己能进行实现的监测方案:1、搜集日志,将我们所需的资料进行收集剪裁后,上传至自己的服务器,然后再交由开发进行分析。 记录内容: GC频率、FPS、重启次数、内存泄露。 这种做法必须是要将文件进行裁剪,同时设备处于wifi状态下让用户无感知的进行,随着使用时间变...原创 2019-07-03 14:01:24 · 949 阅读 · 0 评论 -
Android性能优化之内存优化(HOOK模式初学)
目的:本示例中用于检测图片尺寸和Imageview尺寸,当然也可以检测其他操作,便于发现和解决问题。框架:王大神的epic,关于其原理可百度谷歌。实现:gradle中引入:compile 'me.weishu:epic:0.3.6'public class ImageHook extends XC_MethodHook { @Override protect...原创 2019-07-01 16:43:35 · 1314 阅读 · 0 评论 -
Android性能优化之启动方法总结
记录一下已知优化启动的方式:1、引导页可预先添加一张引导图,让用户在感知上得到提升。2、异步加载-线程池,通过线程池ExecutorService来操作启动项,依赖可以结合CountDownLatch使用,这样提升CPU利用率,从而提升效率。 也可以使用启动器的方式来进行优化,将多个启动项,进行拓扑排序后,按照依赖关系,进行加载操作。封装成符合我们实际要求的工具后,用起来也是不...原创 2019-06-26 10:47:21 · 790 阅读 · 0 评论 -
Android 性能优化之异步启动(ExecutorService)
记录一下学习历程。这里以Application类为例。我们有三个耗时启动操作,如果将它放置在Oncreate中,那无疑是会增加我们的启动时间,原因是假如设备为四核,那可能分配给我们的就只有两个,相当于是本来有四个人可以工作,但是现在有两人干了四个人的活,因此会增加时间成本,同时对CPU的利用率也不高。那此时我们可以通过线程池来进行提升效率(ExecutorService),关于Exec...原创 2019-06-26 09:44:01 · 1371 阅读 · 0 评论 -
Android 性能优化之资源图
目前很多美工图都是把切给IOS的图丢给Android开发,然后苦逼的Android开发就拿着这一套图进行撸,殊不知此时的地雷已经悄悄埋好,等待着有缘人去踩,梳理一下变成雷的原因,个人拙见:假如美工给了我们一套xxhdpi的资源图,我们将这张图正确的放到drawable-xxhdpi文件夹中,界面上通过ImageView引用这张图,然后在xxhdpi范围内的设备上运行,此时查看内存消耗为:...原创 2019-06-25 18:42:37 · 8346 阅读 · 1 评论 -
Android 性能优化之运行时间监测
以Application为例,在进行项目优化时,我们需要监测该类中所有方法的运行时间,找出最耗时的操作进行分析优化。 以往比较随意的做法就是在方法前后加上System.currentTimeMillis(),两者数值进行加减得出运行时间,比如:long start = System.currentTimeMillis();test1();long end = System.c...原创 2019-06-25 16:53:05 · 1498 阅读 · 1 评论