上一节主要讲了一下LauncherUI的组成,讲解了每个模块具体是由那些控件组成的。上节末尾提到了workspace,它是整个launcher模块中最重要的部分,因此本篇主要来梳理workspace的加载默认布局的流程,主要梳理一些重要函数和它加载布局的几种方式。
核心方法
LauncherProvider & loadDefaultFavoritesIfNecessary()
1)第一种:从某个设定好的APK(特定packageName)中获取xml配置文件。
来看一下这个方法的具体实现
第一步先去获取到launcher3的布局属性;然后在第二步通过输入流获取layout,再将其创建为一个输入流设置给XmlPullParser,这个类是用来解析xml的;第三步获取默认的xml。
2)第二种:从配置APK(与android.autoinstalls.config.action.PLAY_AUTO_INSTALL)读xml。