android App冷启动秒开,解决黑白屏和延迟卡顿问题(填坑)

冷启动

当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用。进程创建后,初始化Application,在创建和初始化它的Launch Activity(onCreate onMesure onLayout,ondraw),最后展示在界面上,在这一过程中就会有耗时,如果耗时较久,给用户的体验就不好

黑白屏

黑屏或者白屏是有应用的主题Theme来决定的,如果主题继承的是Base.Theme.AppCompat.Light 这类亮色主题,那显示的就是白屏,如果是Dark主题显示的就是黑屏。

目前最流行的冷启动秒开有二种方案,原理都是利用android:windowBackground 来达到效果

方案1:利用android:windowBackground 设置纯色背景或者设置图片背景

当系统在绘制windowBackground 给用户的感觉达到秒开(视觉欺骗,不是真实的启动速度)



注意

这里有个坑就是 如果想使用方案1,千万不要再开启 windowIsTranslucent
/windowDisablePreview等属性了,否则和方案2区别不大,本人当初就是看网上帖子,当时不太懂原理,结果在方案1里混用了 true,导致怎么也到不到秒开效果,总会有卡顿延迟。在此警记,看待问题还是要认识到深层,懂得原理才行。

方案2:利用android:windowBackground 设置透明背景,形成卡顿效果,甩锅给系统。


使用命令来查看启动时间

adb shell am start -W 包名/Activity路径
例:adb shell am start -W com.XXX.XXX/.XXXActivity

android App冷启动秒开,解决黑白屏和延迟卡顿问题(填坑)_第1张图片
个人倾向第一种方案,给用户的感觉达到秒开。
而第二种方案,甩锅给系统,对于用户体验和Android系统的生态发展都不是太好。

参考文章
性能优化之APP启动时黑白屏的根源解析及对应的优化措施小结
ActivityAPP 启动原理
app启动秒开并避免白屏或黑屏

你可能感兴趣的:(Android,启动秒开,冷启动秒开,解决启动黑白屏)