AMS APP进程间通信
1、APP进程
ActivityThread
客户端(APP进程)的比较重要的类,也就是我们常说的主线程。是一个进程中第一个线程。含有main方法,是一个APP进程的入口。
当我们调用context的startActivity()的时候,实际上调用了ContextImpl的getInstrumentation的excuteStartActivity()。
ActivityThread中含有两个比较重要的变量 mActivities和mServices,保存启动了的Activity以及Service
final ArrayMap<IBinder,ActivityClientRecord> mActivities =
new ArrayMap<IBinder,ActivityClientRecord>()
ActivityMangerProx
APP进程中的AMS的代理。
2、system_server进程
AMS(ActivityManagerService)
服务端(SystemServer进程)进程中比较重要的类。用户点击Launcher上的图标后,接收到APP进程的startActivity请求之后,调用startActivityAsUser()方法。最终调用ActivityManagerService中的startProcessLocked方法,最终让Zygote fork一个进程,并创建一个新的ActivityThread类,调用ActivityThread的main()方法,启动一个新的进程
ApplicationThreadProx
system_sever进程中的APP进程的ApplicationThread的代理
二者进程间通信方式: