现在网上关于Launcher启动流程的源码分析流传最多的是google Launcher2.0的启动流程。截止2018年5月,google Launcher已经到了8.0版本。
经对比,8.0和2.0的启动流程大同小异,整体流程依然保留了2.0的结构特征,以LauncherAppState开始获取手机各项参数,从Launcher到LauncherModel再由LauncherModel到Launcher的回调的合入桌面布局和allapp列表。
我个人以代码逻辑和代码量两者结合,将Launcher的oncreate代码分为了7个步骤:
1:创建LauncherAppState 对象,重点是根据手机硬件参数,生成桌面参数。
2:分屏模式的处理
3:统一创建对象
4:生成桌面分布局
5:计算桌面各布局细节参数
6:LauncherModel的布局操作
7:横屏和callback
以上7步就得到桌面的UI。
如果在配合用户操作机制和后台触发机制就构成了完整的桌面。Launcher的启动机制会绑定用户操作和后台触发,但是不展开讲解具体的内容。
通过对Launcher启动流程的分析可以了解到整个Launcher的框架和架构,也能窥豹一斑的体会Launcher的完成面貌。
Launcher8.0的oncreate()方法源码如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
if (mLauncherCallbacks != null) {
mLa