全方位Android优化APP启动速度的

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014736095/article/details/83863477

最近进了一家外包公司,这代码就不吐槽了,接过外包公司的二手代码的应该都能理解。虽然说给我的评级不算低,2天熟悉代码,上来就一大波需求。好吧,微笑面对吧,毕竟这对我们程序猿来说在正常不过了。想想也是,比某公司要求手机主题要根据手机壳来变颜色正常得多。主要有三个方面会影响到app的启动速度,

原因一:启动页没有设置带背景的主题

style.xml---->

<style name="AppTheme.Launcher" parent="AppTheme">
   <item name="android:windowBackground">@drawable/tzt_welcomeimg</item>
</style>

androidmanifest.xml---->

<activity
    android:name=".SplashActivity"
    android:configChanges="orientation|keyboardHidden"
    android:label="@string/tzt_app_name"
    android:launchMode="standard"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme.Launcher">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

通过上述的方法给启动页的Activity设置一个默认的背景图片,那么在桌面点击应用icon的时候,就会马上打开这个activity并显示这个默认的主题背景,当activity的生命周期加载到oncreate的时候,就可以覆盖了这个背景了,并且执行原有的逻辑。很好地解决了公司的项目启动速度过慢的问题。其解决问题的根本就是先展示静态背景,再加载新布局文件,再执行逻辑。

原因二:application中进行了耗时的操作

怎么知道哪里耗时比较多呢?那就应该使用专业的工具traceview了。第一次使用这个traceview真的摸不着头脑,其实我大概说一下流程:

1、代码生成

Debug.startMethodTracing("filename");

扫描二维码关注公众号,回复: 6237877 查看本文章

...

//需要检测的代码

...

Debug.stopMethodTracing();
生成的trace文件路径为:sdcard/filename.trace。这个就是我们所说的trace文件,真机调试下DDMS的文件管理器里面是找不到的,很多时候高版本的系统对手机的文件目录访问权限进行限制,但是依然可以用普通的命令行去拉取该文件。估计是因为Android系统只限制了查询等,像复制这种操作还是被允许的。

2、实时生成

通过点击DDMS上的监听按钮,DDMS会自动生成.trace文件并且打开。

获取trace文件

anr问题的log一般都在/data/anr/目录下,使用如下命令即可导出log: adb pull /data/anr/traces.txt d:/ =》意思是将手机上的traces.txt导出到电脑的d目录下

使用代码生成的trace文件在sdcard/目录下,导入如下: adb pull sdcard/kuby_review.trace

高版本的android studio打开ddms工具的方法如下:

包版本的Android Studio版面中已经找不到DDMS的入口了,官方说这东西不常用,就简化掉了。我们应该这样打开

sdk目录------>tools----->monitor.bat

分析traceview显示的结果

看图其实已经很直观了。这里我就不多了说,真要详细了解的请看其他大神的文章,或者可以再留言区向我提问。

其实根据结果,能找到某些第三方库初始化的时候挺耗时的,但是摆在子线程也没有明显的改善,所以这个方法对于我公司的项目并不是很明显。

原因三:multidex分包引起的

multdex其实有很深的学问,但是针对启动APP的优化,觉得这个篇文章比较专,这边我就不重复造轮子了,给个传送门大家哈:https://blog.csdn.net/u012224845/article/details/81068778

按照上面文章操作,获取到的

其实对于5.0 以上的手机似乎影响不大,目前5.0以下的手机市场占有率也很低吧,所以尝试过,后来没有用。

全手打,希望能帮助到大家。有条件的可以打赏打赏,暂时没有的麻烦赞一个,谢谢。

猜你喜欢

转载自blog.csdn.net/u014736095/article/details/83863477