冷启动:应用进程被杀掉状态下的启动;
热启动:应用进程仍然存活状态下,点击桌面APP的图标启动或从任务列表启动。
冷启动过程(原理):
- 系统加载应用
- 创建应用进程
- 初始化Application
- 启动UI线程
- 创建Activity
- 解析和加载内容视图
- 布局
- 绘制
*热启动直接从已有的进程中启动,直接创建和初始化Activity。
*所以要减少冷启动的时间,1. 减少Application中的耗时操作;2. 减少onCreate中的耗时操作
优化
1. 白屏问题
为 AppTheme 加入 windowIsTranslucent
和 windowNoTitle
这两个属性,都设置成 true,就可以让程序在初始化的时候窗口是透明的,初始化结束后程序主界面才会显示出来,从而也就完全看不到白屏界面了。(其实是给人的一种系统响应慢的错觉,让手机厂商背锅吧)
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
</style>
2. 简化启动页
1. 纯色背景 + 启动图标
绘制背景:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorPrimary" />
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher" />
</item>
</layer-list>
将此背景设置为启动页的主题:
<resources>
<!-- 基本主题 -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!--纯色加启动图标的方案-->
<style name="SplashThemeLayer" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/bg_splash_layer_list</item>
</style>
</resources>
2. 使用背景图片
将 windowBackground
换成图片即可。背景颜色需要设置为透明 #00000000
。
<style name="SplashThemeImage" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@mipmap/icon_splish</item>
<!--沉浸-->
<item name="android:windowTranslucentStatus">true</item>
</style>
网友评论