冷启动概述
app冷启动: 当应用启动时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用, 这个启动方式就叫做冷启动(后台不存在该应用进程)。冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。例外,首次打开应用,或者是在清除当前应用缓存数据后打开app!
热启动概述
app热启动: 当应用已经被打开, 但是被按下返回键、Home键等按键时回到桌面或者是其他程序的时候,再重新打开该app时, 这个方式叫做热启动(后台已经存在该应用进程)。热启动因为会从已有的进程中来启动,所以热启动就不会走Application这步了,而是直接走MainActivity(包括一系列的测量、布局、绘制),所以热启动的过程只需要创建和初始化一个MainActivity就行了,而不必创建和初始化Application 。
app热启动和冷启动的区别
app热启动:
当应用已经被打开, 但是被按下返回键、Home键等按键时回到桌面或者是其他程序的时候,再重新打开该app时, 这个方式叫做热启动(后台已经存在该应用进程)。热启动因为会从已有的进程中来启动,所以热启动就不会走Application这步了,而是直接走MainActivity(包括一系列的测量、布局、绘制),所以热启动的过程只需要创建和初始化一个MainActivity就行了,而不必创建和初始化Application。
app冷启动:
当应用启动时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用, 这个启动方式就叫做冷启动(后台不存在该应用进程)。冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Applica
应用启动时间概述
用户期望应用程序能够快速响应并快速加载。启动时间慢的应用程序不能满足此期望,并且可能会使用户感到失望。这种糟糕的体验可能会导致用户在Play商店中对您的应用进行差评,甚至完全放弃您的应用。
具体有哪些阶段可优化呢?
点击app以后到初始化Application之间这段时间,系统接管,从Zygote进程中fork创建新进程,GC回收等等一系列操作,和我们app无关
从上图可以看到,整个冷启动流程中至少有两处onCreate,分别是Application和Activity,整个流程都是可控的。所以,onCreate方法做的事情越多,冷启动消耗的时间越长
启动时间的计算
Logcat 自动打印 从Android 4.4(API 19)开始,Logcat自动帮我们打印出应用的启动时间。这个时间从应用启动(创建进程)开始计算,到完成视图的第一次绘制(即Activity内容对用户可见)为止。
Activity的reportFullyDrawn() 我们可以在Activity的任意位置调用此方法已打印你想看到的、执行完某个方法的最终时间。它会在Logcat里打印从apk初始化(和前面Displayed的时间是一样的)到reportFullyDrawn()方法被调用用了多长时间
冷启动的解决方案
1、提供非个性化推荐,比如说热门排行榜,等用户数据收集到一定的时候,切换为个性化推荐利用用户注册信息,人口统计学信息;用户兴趣描述;从其它网站导入的用户站外行为等。
2、选择合适的物品启动用户的兴趣,用户登录时对一些物品进行反馈,收集用户对这些物品的兴趣信息,然后给用户推荐和这些物品相似的物品,一般要具有以下特点:(1) 比较热门,(2) 具有代表性和区分性(不能是大众化或老少皆宜的,兴趣无可分性),(3) 启动物品集合需要有多样性,在不知道用户兴趣的情况下,需要提供很高覆盖率的启动物品集合,几乎覆盖所有主流的用户兴趣。
3、利用物品的内容信息,userCF算法需要解决第一推动力的问题,第一个用户从哪里发现新物品。考虑利用物品的内容信息,将新物品先投放给曾经喜欢过和它内容相似的其他物品的用户。对于itemCF,只能利用物品的内容信息计算物品的相关程度。基本思路就是将物品转换为关键词向量,通过计算向量之间的相似度(如余弦相似度),得到物品的相关程度。
4、采用专家标注,针对很多系统在建立的时候,既没有用户的行为数据,也没有充足的物品内容信息来计算物品相似度,这时就需要利用专家标注。
5、利用用户在其他地方已经沉淀的数据进行冷启动,比如引导用户通过社交网络账号登录,一方面降低注册成本提高转化率,另一方面获取用户的社交网络信息,解决冷启动问题。
6、利用用户的手机等兴趣偏好进行冷启动:Android手机开放的比较高,所以在安装自己的app时,就可以顺路了解下手机上还安装了什么其他的app。然后可以总结用户的特点和类型。
在Android开发中的,热启动与冷启动老生常谈;这【篇文章】也概括了他们的原理及后面的区别。还有优化类方案解析。更多Android的技术学习进阶,大家可以参考《Android核心技术类目》进行学习补漏。
文末
冷启动:冷启动其实就是电脑启动的一种方式,当电脑切断电源,在关机状态下按下POWER启动计算机。
热启动:在计算机已经开启的状态下,通过菜单,任务管理器,快捷键或键盘重新引导操作。
无论是冷启动还是热启动,都要重新上电,检测硬件,将RAM区清零,即所有变量都初始化为0。