Launcher启动流程

Launcher即桌面,是Android智能设备的窗口,用户使用最频繁的软件之一。Launhcer是Android所有应用的入口,也提供窗口小部件等功能

当然,Launcher本身就是一个APP,一个提供桌面的APP,我们也可以开发一款Launcher APP作为手机的桌面。Laucher有很多和普通APP不同的地方。

  • Launcher是顶部APP,即任何应用返回后都是到Launcher,不能再继续返回;
  • Launcher是所有应用的入口,可以管理应用;
  • Launcher是Android系统启动后就要显示给用户的应用。

    我们的手机一开机第一眼看见的就是Launcher,也就是说Launcher在开机的过程中就已经启动完成,下文,我们就来看看。

前面,我们已经讲过了 init进程 –> Zygote进程 –> SystemServer进程的启动流程,

在SystemServer的main方法中,启动了各个服务,其中包括 startOtherServices();

在这里插入图片描述
启动的服务有以下:包括我们常见的,AMS、PMS、WMS…
在这里插入图片描述
在这里插入图片描述
接下来就需要初始化这些服务:
在这里插入图片描述
在这里插入图片描述
从注释可以了解到,现在所有的服务都已经启动好了,可以告诉ActivityManager已经ok了。可以开始launching系统第一个application了(initial:最开始的,第一个的)。

调用 frameworks /base /services /core /java /com /android /server /am /ActivityManagerService.systemReady() 进行启动任务。

跟进去

在这里插入图片描述
mAtmInternal是什么呢?
frameworks /base /services /core /java /com /android /server /wm /ActivityTaskManagerInternal.java,发现它是一个抽象类,真正的实现类是在 ==frameworks /base /services /core /java /com /android /server /wm /ActivityTaskManagerService.LocalService ==
在这里插入图片描述
在这里插入图片描述
mRootActivityContainer就是 frameworks /base /services /core /java /com /android /server /wm /RootActivityContainer.java
在这里插入图片描述
跟进去发现,会先调用ActivityTaskManagerService的getHomeIntent(),intent.addCategory(Intent.CATEGORY_HOME); 看到这里熟悉了吗。
在这里插入图片描述
然后会调用ActivityTaskManagerService的getActivityStartController()获取 frameworks /base /services /core /java /com /android /server /wm /ActivityStartController对象,调用ActivityStartController的startHomeActivity()方法。
在这里插入图片描述
发现其调用的是 frameworks /base /services /core /java /com /android /server /wm /ActivityStackSupervisor 的scheduleResumeTopActivities()方法
在这里插入图片描述
发现是通过Handler发送了一个消息进行处理:
在这里插入图片描述
调用RootActivityContainer的resumeFocusedStacksTopActivities()方法,

在这里插入图片描述
最后再调用 frameworks /base /services /core /java /com /android /server /wm /ActivityStack的 resumeTopActivityUncheckedLocked()方法

在这里插入图片描述
里面会调用ActivityStack的resumeTopActivityInnerLocked()方法,

启动Activity的过程是将Activity置为顶层可见,称为resume top Activity。resumeTopActivityInnerLocked方法

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值