性能优化之App启动优化

一、前记

        随着技术的迭代,许多三方SDK一涌而出,统计、推送、IM、BUG监控等,导致我们现在项目中的Application很臃肿,在onCreate方法中各种初始化,最后导致App启动非常缓慢,初始化一个推送需要2秒时间,初始化百度地图需要3秒时间,初始化.....各种加在一起就N秒了,启动应用,等待如此漫长,最后的结果,用户不干了,本篇文章就是讲解如何优化App启动。

二、初识App启动

        从源码了解,我们的手机屏幕其实就是一个大的app,上面每一个应用都是一个Activity,在我们点击屏幕App应用,系统通知ActivityManagerService来操作一系列事情,这一块我们是没法优化的,我们能优化是Application与启动页,为什么启动会慢,我们先来看项目中Application的代码。

性能优化之App启动优化_第1张图片
Application中onCreate代码

基本上我们都会在Application中做这种类似的操作(以上代码来自GitHub某个Demo),我启动该应用,发现会白屏一段时间,启动耗时:8s。如果说是因为项目大而启动慢,我们打开QQ或者微信发现,他们非常快,所以这个说法不成立,那么原因出在哪里。当前在前面就说了,是由于Application初始化太多控件所导致的,那么哪个控件耗时较多,在哪一步导致这个问题,这个我们并不知道,所以我们先用Trace文件来统计耗时情况,代码很简单。两句代码。如下图,在Application的onCreate中加入代码。

性能优化之App启动优化_第2张图片
添加统计后的代码

        看图中两个箭头在SDk初始化前开始执行,完成后停止统计。添加以上代码,然后运行程序,会在手机sdcard里生成一个startTIme.trace文件。接下来我们用cmd命令,把他拖到电脑桌面。如下图

性能优化之App启动优化_第3张图片
cmd命令


性能优化之App启动优化_第4张图片
桌面trace文件

怎么打开他呢,直接丢到androidStudio里面,如下图

性能优化之App启动优化_第5张图片

通过这个图我们可以看到,标1的是执行次数,一些方法指令的次数,标2的为耗时操作,在耗时这边,推送要3.4秒加载时间,地图要2.9秒加载时间,bug监控1.2秒加载时间,这一块占据了7.6秒,那如何优化,接下来我们开始去优化这段代码。

三、App启动优化

           在这边优化的方式有多种,延迟加载、开启子线程等。。这些要根据原因而定。因为我所引用这些SDK没有处理Handler,可以直接放到线程里面去工作。如何优化,如下图:

性能优化之App启动优化_第6张图片
优化后的Application

把耗时操作丢到线程里头,等然后在启动页的onCreate里面调用。

看下优化过后的启动时间:0.04秒,快的不行。

性能优化之App启动优化_第7张图片
优化后的trace

接下来大功告成了吗,No,还没有,因为由于过快,还是有闪的动作,怎么着,最后参考了QQ的做法,在Theme样式中加上这两个属性,一个是设置透明,一个是不要背景图。现在点击就没有闪屏的现象,直接进入启动页。

主题加入的属性

启动优化就到这里。

你可能感兴趣的:(性能优化之App启动优化)