Android 性能分析(一)—— 概要篇

最近需要对app进行性能分析,一开始的时候,都是根据网上的各种文章参考,但是很多都是只是介绍概念,没有介绍使用什么工具以及什么样效果需要进行优化,因为我们对app优化肯定是要达到什么样的效果,必须给出一篇优化文档的,我们目前是什么样的效果,经过优化过后达到什么样的预期效果,这样领导才会同意你去安排开发和测试抽出时间去进行优化,并且各个模块能达到什么样的效果都是需要进行统计的,这都是需要时间去安排的,这种就很可能导致产品提的需求和优化时间冲突了,需求就要延期,开发领导去和产品领导扯皮,一堆麻烦事,因此我们必须要拿出严谨的文档去说服领导,这个就需要你进行各种测试,突出我们的问题,夸大一点预期效果,才行。
下面我就介绍一下我自己总结的需要优化的地方,具体的统计会每个方面都会使用工具进行统计

1、启动优化

1.1 app启动优化

1.1.1 启动背景优化

启动页优化是因为app冷启动时候会出现黑屏现象,因为app第三方库初始化耗费时间,导致第一个activity启动延迟,但是app已经启动了,所以系统默认给了一个黑屏,这种对待用户很不友好,所以才会采用启动背景优化
启动背景优化方式有两种:一是设置Theme,将背景设置为启动图,这种只能设置静态图片,一般都是给SplashActivity设置Theme,这样不会影响到其他页面,大型app基本都是采用这种方案;二也是设置Theme,只是这次是设置背景透明,让用户以为app尚未启动,存在卡顿时间,同样也是给SplashActivity设置Theme,但是这种存在问题就是用户会以为app尚未打开,可能用户就去点击其他app了,不利于维护app的活跃度
这种现象一般开发都会自觉做的,所以基本不存在优化点。

1.1.2 启动时间优化

app黑屏现象就是在application中,第三方库的启动太过耗时,导致第一个activity长时间不能启动。统计app启动时间有很多方式,很多第三方检测都可以提供,之前用过testin进行检测,下面是检测的结果。
在这里插入图片描述
优化的方式一般有两种:一是延迟加载,将不必要放在application的onCreate中的方法,放在onResume方法中,或者放到SplashActivity中进行加载,因为SplashActivity肯定会启动的,所以第三方库也肯定会加载,不会担心使用时候不加载问题,比如地图第三方库就可以延迟加载,也不会产生问题;二是异步加载,就是将第三方库放到异步线程中进行加载,可以使用IntentService来启动第三方库,启动完之后,Service会自动关闭。

1.2 各页面启动优化

页面启动统计方式:
一、在testin上并没有各页面的启动时间统计,所以只能自己手动统计,在Log中过滤ActivityManager,就会看到各页面的启动时间,只要每个页面启动一次就可以看到页面的启动时间。
在这里插入图片描述
二、当然除了上面的方式,也可以通过埋点的形式上传,我们只要自定义埋点,然后在onCreate中启动,在第一次渲染结束的时候结束,就可以在统计的网站上看到我们的页面启动时间了,至于具体的就要看我们自己怎么定义了,我觉得应该大型app必备的,因为就可以在统计网站上看到各页面的启动时间了,然后有针对的进行优化。

耗时分析:
通过上述两种方式找到了耗时严重的页面,就可以针对页面启动时间进行分析了:
页面耗时操作基本分为四种:
一是布局加载耗时,这部分就涉及布局优化了,后面会专门进行讲解;
二是逻辑处理比较复杂,这部分也很常见,尤其是电商类app,因为页面中存在太多筛选条件,还要根据各种条件展示各种酷炫的动画效果,这就导致逻辑很多,并且随着不同版本的不断迭代,导致代码越积越多,人员更新,老代码更加不敢随意修改,所以代码量急剧增加,逻辑复杂也就可以理解了,这部分是最难优化的,因为谁都不敢随意改动,就怕改动了之前哪个需求的逻辑,导致功能出现问题;
三是数据展示耗时,就是当接口返回数据的时候,我们进行展示的时候,可能数据太多或者展示的时候存在刷新问题导致页面操作耗时。
四是主线程进行IO操作,主线程进行读写文件或者数据库的操作都是非常耗时的,包括sp文件的读写。
优化方案:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值