framwork学习:应用启动流程&wms

wms和ams的关系:

1.wms,ams, atms都不是独立的进程,

2.这些服务都是属于SystemServer进程中的服务,所以可以相互通信不需要IPC(跨进程通信),如图2红色区域

3.都是在手机启动SystemServer时就启动了(都是为了给应用使用的,所以在应用启动之前它们就应该存在)

ams=ams+atms:四大组件的管理

atms:ams过于庞大android10之后把activity的管理从ams中抽出

图1:

 图2:

图3: 

 

 launcher 与ams通信通过binder,binder来自Servicemanager,app一启动就可以通过sm拿到这些服务的binder

为什么手机启动时要启动systemServer?为了拿到ams,wms等服务,因为ams,wms在systemserver中,一旦ams wms创建后就会把binder自己的binder存到sm,app创建后也会把自己的binder给到ams由ams进行管理(也就是存到systemServer)(如图3)

手机启动时会启动init进程,init会启动sm进程(属于app的守护进程,由sm帮我们拿到ams或wms服务的binder),再通过binder调用ams的代码,再由ams发送socket请求让zygote fork一个进程

 ams如何拿到app的binder:

 app启动会创建ActivityThread,然后调用attach

 attach中会拿到ams(mgr),然后调用attachapplication把mAppThread(就是一个binder)传给ams

图4

每个应用都有自己的虚拟机在zygote中启动(虚拟机的作用是内存管理)

虚拟机的作用:

app为什么能一直运行?

有一个死循环(looper.loop())

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值