Android开发常谈—【热启动&冷启动】
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
冷启动概述
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.4API 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。