Android Settings 应用加载流程(一)
AndroidMainfest.xml 文件中找到入口文件,分析启动流程。
|
|
Settings应用的入口为 Settings.java 要分析 Settings 应用,就需要从 Settings.java 入手。
Settings.java
|
|
Settings.java 中并没有具体的实现代码,而是定义了很多内部类,这些内部类和 Settings 一样都继承自 SettingsActivity。
Settings.java 中定义的内部类在 manifest.xml 文件中,也可以看到它的定义:
|
|
Settings.java 中内部类的定义甚至没有一行代码实现,其实它的实现逻辑就是根据在 manifest.xml 中配置在 activity 节点中的 meta-data 为 com.android.settings.FRAGMENT_CLASS 的值去加载对应的 fragment 。
SettingsActivity 只是一个模板类,具体的UI以及业务流程都是在 Fragment 去完成了;
SettingsActivity.java
onCreate
|
|
getMetaData
|
|
在该方法中去获取配置在 manifest.xml 中的 META_DATA_KEY_FRAGMENT_CLASS (“com.android.settings.FRAGMENT_CLASS”) 。
getIntent
|
|
getIntent() 默认的行为被重写了,通过 getStartingFragmentClass() 方法获取需要加载的 Fragment 名称,如果是 Settings 入口页面,则返回 null;
如果 getStartingFragmentClass 中获取到的 FragmentClass 不为空,则重新创建一个新的 Intent 对象返回,并且额外添加了 EXTRA_SHOW_FRAGMENT_ARGUMENTS 和 EXTRA_SHOW_FRAGMENT 参数;