如何实现app启动速度优化

随着项目版本的迭代,app的性能问题会逐渐暴露出来,而好的用户体验与性能表现紧密相关。app的启动速度缓慢这是很多开发者都遇到的一个问题,比如启动缓慢导致的黑屏,白屏问题,大部分的解决方案案都是做一个透明的主题,或者是做一个Splash界面,但是这并没有从根本上解决这个问题, 只是从视觉上让用户以为黑屏白屏问题得到了解决。那么如何从根本上解决这个问题或者做到一定程度的缓解?

作为开发者我使用的是友盟+U-APM这款工具,对app进行性能监测,它可以快速定位app存在的问题,然后再进行优化,节省了我很大一部分时间。

一、应用的启动方式

应用的启动分为冷启动、热启动、温启动,而启动最慢、挑战最大的就是冷启动:系统和app本身都有更多的工作要从头开始!

1、冷启动

冷启动指的是应用程序从头开始:系统的进程没有,直到此开始,创建了应用程序的进程。 在应用程序自设备启动以来第一次启动或系统杀死应用程序等情况下会发生冷启动。 这种类型的启动在最小化启动时间方面是最大的挑战,因为系统和应用程序比其他启动状态具有更多的工作。

2、热启动

与冷启动相比,热启动应用程序要简单得多,开销更低。在热启动,系统会把你活动放到前台,如果所有应用程序的活动仍驻留在内存中,那么应用程序可以避免重复对象初始化,UI的布局和渲染。

热启动显示与冷启动场景相同的屏幕行为:系统进程显示空白屏幕,直到应用程序完成呈现活动。

3、温启动

用户退出您的应用,但随后重新启动。该过程可能已继续运行,但应用程序必须通过调用onCreate()从头开始重新创建活动。系统从内存中驱逐您的应用程序,然后用户重新启动它。进程和Activity需要重新启动,但任务可以从保存的实例状态包传递到onCreate()中。

二、为什么出现白屏

冷启动白屏持续时间可能会很长,这可是个槽糕的体验,它的启动速度是由于以下引起的:

1、application的onCreate流程,对于大型的app来说,通常会在这里做大量的通用组件的初始化操作;

建议:很多第三方SDK都放在application初始化,我们可以放到用到的地方才进行初始化操作。

2、Activity的onCreate流程,特别是UI的布局与渲染操作,如果布局过于复杂很可能导致严重的启动性能问题;

建议:Activity仅初始化那些立即需要的对象,xml布局减少冗余或嵌套布局。

优化app启动速度意义重大,启动时间过长,可能会使用户直接卸载app。

三、启动速度优化方案

作为普通应用,app进程的创建等环节我们是无法主动控制的,可以优化的也就是application、Activity创建以及回调等过程。

1、利用提前展示出来的Window,快速展示出来一个界面,给用户快速反馈的体验;

2、避免在启动时做密集沉重的初始化(Heavy app initialization);

3、定位问题:避免I/O操作、反序列化、网络操作、布局嵌套等。

四、app启动性能监测工具友盟+U-APM

U-APM 是友盟+推出的app稳定性监控、性能监控和云真机测试平台。它的启动分析是通过提供详尽的启动耗时、慢启动情况、启动崩溃数据。帮助您把控应用的启动性能状态,从源头减少客户流失。

启动耗时:展示当前筛选维度和时间状态下的启动次数、平均耗时、以及分位数。

慢启动情况:展示慢启动耗时、慢启动列表,可查看慢启动详细信息。

启动崩溃数据:展示首次启动、冷启动、热启动筛选条件下的崩溃率、崩溃次数、影响用户数、影响用户占比的趋势以及列表。可下钻至某条崩溃的错误详情页面。

关于app启动速度优化,我们可以从多方面入手,但是等待用户反馈问题是比较慢的,友盟+U-APM可以快速定位异常,不仅节省了问题排查时间又能提高工作效率。

你可能感兴趣的:(如何实现app启动速度优化)