Android优化APP启动速度思路

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

APP的性能优化是一项大工程,其实总结下来的终极目标体现出来就是快、稳、省、小。


最近接手一个上古项目,在测试阶段把APP交给了**功能性能测试团队,此公司宣传覆盖上千机型、测试全面、巴拉巴拉。。。。。。
一周之后拿到APP测试报告,测试报告中问题机型全尼玛是2013、2014年的机型,版本最高不超过4.4,运存不超过1G,甚至出现不知道多少480*800的机型进行测试(是从某二手网上按公斤称买回来的吧?以上只是吐槽,前人挖的坑跪着也得填完啊)。报告总结一下就是在问题机型上安装速度慢、启动速度慢、部分页面运行不流畅、运行占用内存过高、一个机型出现过oom(内存512M),当然也有一些UI问题(确实是代码问题),看着iOS他们悠闲自在的模样,只能45°仰望天空不让泪水掉下来。


  • 启动速度的优化
    报告中启动速度其实就是冷启动啦(app第一次启动从点击icon到第一个页面展示的过程时长)。
    很多前辈都已经总结的挺好了,主要思想就是
    1.Application和首页中避免不必要的耗时操作。
    2.设置启动页的theme,用透明主题替代启动的白屏或者黑屏效果,从视觉效果上减少等到时间,其中启动页的透明theme的配置是
    <!--解决启动白屏-->
    <style name="SplashTheme" parent="Theme.AppBaseTheme">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
    </style>

然后需要作报告,向客户说明优化效果,怎么获取到app的启动时间呢?
当然是通过命令行进行操作了:
adb shell am start -W [PackageName]/[PackageName.MainActivity]
比如我的包名是com.android.gerryrun.myanimdemo,启动页MainActivity包路径是.ui.main.activity.MainActivity,我打算启动3次取平均值,那么最终执行以下命令行:

adb shell am start -S -R 3 -W com.android.gerryrun.myanimdemo/.ui.main.activity.MainActivity

这里面涉及到三个时间,ThisTime、TotalTime 和 WaitTime。WaitTime 是 startActivityAndWait 这个方法的调用耗时,ThisTime 是指调用过程中最后一个 Activity 启动时间到这个 Activity 的 startActivityAndWait 调用结束。TotalTime 是指调用过程中第一个 Activity 的启动时间到最后一个 Activity 的 startActivityAndWait 结束。如果过程中只有一个 Activity ,则 TotalTime 等于 ThisTime。

这里面涉及到三个时间,ThisTime、TotalTime 和 WaitTime。WaitTime 是 startActivityAndWait 这个方法的调用耗时,ThisTime 是指调用过程中最后一个 Activity 启动时间到这个 Activity 的 startActivityAndWait 调用结束。TotalTime 是指调用过程中第一个 Activity 的启动时间到最后一个 Activity 的 startActivityAndWait 结束。如果过程中只有一个 Activity ,则 TotalTime 等于 ThisTime。

这样就从代码逻辑和视觉效果上完成了优化,报告中真实时长优化缩短了25%,再加上透明主题的应用,总体上效果还是可以的,通过了客户的体验测试。

猜你喜欢

转载自blog.csdn.net/GerryRun/article/details/82351636