0
点赞
收藏
分享

微信扫一扫

手把手讲解 性能优化案例(1)启动速度优化

前言

学到老活到老,路漫漫其修远兮。与众君共勉 !


引子

案例

当然你也可以加上-S -R 10 ,连续启动10次,然后自己计算平均启动时长。

上面的这是我在模拟UI线程中执行耗时操作的极端情况。在实际的项目中,可能这些拖慢Activity启动时间的一些耗时任务都是错综复杂的,这时候应该如何处理?
所有的启动任务按照两个维度分为四类:
必要: 比如我们的launcher是WelcomeActivity,它会自动结束,然后下一个是MainActivity,如果是MainActivity所必须的一些参数需要提前获取,那么这个获取这些参数的任务就是必要任务。
耗时:按照消耗时间的长短做大致区分,不耗时,一般是微量计算,很快能执行完,不会耽误主线程太多时间。 耗时长的,一般是第三方SDK的初始化,或者执行网络请求。

这4类分别有不同的处理方式:

另外,经验之谈:针对必要且耗时的任务,如果数量非常多,直接用一个线程去执行,但是启动页Activity同样会停留很久,这个时候,可以给所有任务区分一个轻重缓急,在重要任务执行完毕之后,就进入下一个Activity,不必等待非重要任务的结果。(根据这个思路,相信各位大佬都能写出自己的实现代码,我就不多嘴了).


最后提一下, 有些情况下启动app,会出现明显白屏,然后再出现我们写的UI布局。 这是因为 AMS在启动我们的Activity的时候,会先显示一个默认白色的window,然后再出现我们写的UI布局,如果因为我们自身app的启动耗时过长,导致白屏时间太长,体验就非常不好。这种有两种解决方案:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowNoTitle">true</item>
</style>
<style name="splash" parent="AppTheme.NoActionBar">
        <item name="android:windowBackground">@drawable/bg_splash</item>
        <item name="android:windowFullscreen">true</item>
</style>

结语

举报

相关推荐

优化tomcat启动速度

Android启动速度优化

0 条评论