launcher 启动Main

Launcher通过AMS来启动Main,Launcher、AMS、Main位于3个不同的进程中。
通过Binder实现进程间通信

用户通过点击Launcher向AMS发送一个启动Main的请求

AMS收到Launcher请求,记录Main信息。然后出一个请求让Binder进入中止状态。

Launcher进入中止状态,然后告诉AMS我已经中止了,你去启动Main吧

AMS去启动Main,怎么启动呢?Main是通过Main所在的进程创建的,但是AMS发现Main依附的应用程序进程还不存在,没法创建Main,
AMS只能先去负责创建Main的进程

Main的进程创建完成后,AMS会收到一个进程间请求告诉他Main的进程已经创建了

AMS收到进程间通信请求,知道Main的进程已经创建了,就把Main的信息给了Main的进程,让他去创建Main。


用户-校长
Launcher-优秀教师代表
Launcher图标-每一个学生
Main-B同学
AMS-政教处主任
Process-班主任

新学期开始,九年级的学生们都来到学校操场,然后在各个班的指定区域区域坐下,老师们的位置在前面,学生们的位置在老师后面。

优秀教师L代表站在台上,讲着上次考试中一些同学取得优异成绩,脸上十分满足。
校长突然走过来,指着最后一排的M同学问优秀教师L:"那是哪个班的?在底下也不老实!让他上台"。

优秀教师L代表很无奈,我也不认识这个同学啊。他向政教处主任A打了一个电话,让那个同学上来。

政教处主任A接到电话后,记录了一下M的位置,然后说你先别演讲了。

优秀教师L从台上下来,然后告诉政教处主任我已经下来,你把M同学叫上来吧。

政教处主任A准备让M同学上台,可是他也不认识M,他只能去找M的班主任B,可是班主任B这个时候不在,也就没法通知M同学。
于是政教处主任A只能打电话让班主任B快点过来。

班主任B收到电话后,马上往操场赶,到了后马上打电话告诉政教处主任A我到了。

政教处主任A收到班主任B的电话,把M同学的位置,穿的衣服等信息告诉了班主任B,让B去把M同学叫上台。