android 正在启动分析,Android-启动优化

一.App的启动以及Application启动过程分析

4dbc9b3143b4

从点击桌面Icon到我们第一个见面展示出来分为两个部分

1.系统去创建进程以及Application

2.Application到Acitivty

第一部分是系统黑盒子模块,我们没有办法去通过代码优化,但是第二部分我们可以去通过代码进行优化。

冷启动

App 没有启动过或 App 进程被杀,系统中不存在该 App 进程,此时启动即为冷启动。需要创建 App 进程,加载相关资源,启动 Main Thread,初始化首屏 Activity 等。在这个过程中,屏幕会显示一个空白的窗口(颜色基于主题),直至首屏 Activity 完全启动。

热启动

热启动意味着 App 进程只是处于后台,系统只是将其从后台带到前台展示给用户。类同与冷启动,在这个过程中,屏幕会显示一个空白的窗口(颜色基于主题),直至 activity 渲染完毕。

温启动

介于冷启动和热启动之间,一般来说在以下两种情况下发生:

用户返回退出了 App,然后又启动。进程可能还在运行,但是 activity 需要重建。

用户退出 App 后,系统可能由于内存原因将 App 杀死,进程和 activity 都需要重启,但是可以在 onCreate 中将被动杀死锁保存的状态(saved instance state)恢复。

二.黑白屏原因

当 App 的 theme 没有任何继承,这时候 App 的启动时候为黑屏屏。

当 App 的 theme 继承于 Theme.AppCompat.Light,这时候 App 的启动时候为白屏。

三.解决方案

由上面可以知道,黑白屏出现的原因是在 App 未完全启动的时候,出现了一个背景界面,来提示用户 App 正在启动中。

所以我们可以直接替换背景 android:windowBackground 为图片。可以使用广告进行宣传,这是目前常用的方案。

@drawable/bg

设置 Theme 背景为透明的。这样虽然可以避免出现黑白屏的问题,但是这在一些低端手机上,还是会闪烁一下。而且有时候由于背景设置为透明的,会影响到 Activity 间的切换动画。

true

直接把 Theme 的背景去掉,这样就不会出现黑白屏,也不会有设置 Theme 背景为透明的一些问题。

true

注:不论是把 Theme 背景设置为透明的还是直接把背景去掉,这样又会回到问题的最起点,点击 App 图标进行启动,在 App 未完全启动的时候,用户不能确定 App 是否已经启动。所以不太推荐这样处理。

四.解决方案小优化

在使用为 Theme 设置背景图这个方案的时候,如果直接把这个设置添加 App 的 Theme 中,那么所有的 Acticity 都有默认使用这个背景,不太符合逻辑。所以一般是对 Acticity 进行设置。

@drawable/bg

五.启动时间

在 App 启动的时候,我们可以把一些耗时的操作放在子线程中进行操作。特别是初始化一些第三方库文件,单这些操作没有创建 handler、没有操作 UI、对异步要求不高的时候,就可以把他放在子线程中进行操作。还有一些单例模式,有些单例模式初始化也比较复杂,耗时,可以采用懒加载方法进行加载。

AppLauncher是一个轻量的Android App的任务启动器。

它是一个优秀的异步初始化解决方案,用来方便、快速的帮助APP处理异步初始化来达到应用启动的最佳性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值