从综述将启动流程拆分成7步,其中第一步,重点是通过手机的硬件来获取信息。
关于第一步在oncreate中的源码如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
if (mLauncherCallbacks != null) {
mLauncherCallbacks.preOnCreate();
}
super.onCreate(savedInstanceState);
LauncherAppState app = LauncherAppState.getInstance(this);
从源码看,重点就做了一件事情,创建LauncherAppState 对象。
这是因为在Launcher的启动流程中,手机硬件参数获取不是在Launcher.java这个类中完成。
LauncherAppState.getInstance(this) 这段代码是初始化一个LauncherAppState的对象app,其初始化方法是通过一个静态方法getInstance来创建,创建的时候需要传入Launcher对象作为参数,那么说明在LauncherAppState中会用到Launcher的对象,下面详细看getInstance方法。
源码如下:
public static LauncherAppState getInstance(final Context context) {
if (INSTANCE == null) {
if (Looper.myLooper() == Looper.getMainLooper()) {
INSTANCE = new LauncherAppState(context.getApplicationContext());