所谓冷启动是之前没有启动过,应用进程不存在,如第一次安装启动,杀死进程后重新启动等。
app 冷启动时会有一个白屏或黑屏的启动窗口,如果应用启动较慢让用户一直对着白色的屏幕好几秒体验不是太好, google material design 推荐自定义启动窗口背景
- 可以放上企业 logo 做为品牌宣传
splash_bg.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque">
<item android:drawable="@color/white" />
<item android:bottom="50dp">
<bitmap
android:gravity="bottom"
android:src="@mipmap/ic_launcher">
</bitmap>
</item>
</layer-list>
- 可以放一个第一个页面的 UI placeholder 给用户一种启动非常快的感觉
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque">
<item android:drawable="@color/colorPrimaryDark" />
<item
android:drawable="@color/white"
android:top="20dp" />
</layer-list>
自定义一个 style 把 windowBackground 设置为我们自定义的背景
<style name="AppTheme.NoActionBar.Splash">
<item name="android:windowBackground">@drawable/splash_bg</item>
</style>
把启动 activity 的 theme 设置成上面的 style
<activity
android:name=".activities.SplashActivity"
android:theme="@style/AppTheme.NoActionBar.Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在启动 activity 的 onCreate 方法中设置回正常的样式, super.onCreate 之前调用
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme_NoActionBar);
super.onCreate(savedInstanceState);
}
app 启动时间当然越短越好,主要是不要在 Application onCreate和启动 activity 的 onCreate 中做太多工作,这又涉及到性能优化的话题了