zygote通过本地Socket通信的疑问

来源:3-1 你知道应用进程是怎么启动的吗?

少为

2019-08-21

老师在课上有提到一个问题,为什么zygote使用本地Socket 而不是 binder 来与 系统服务通信?我查了一些资料,得出的结论是 fork() 这个调用只能复制当前线程的内存空间到子进程,而要启用binder机制就要启用binder线程池,显然这种情况下,fork就没办法正常工作了。而现在framework中Zygote在fork的时候,也会先将守护线程关闭,fork结束后再将守护线程重启起来,也应该是这个原因。所以Zygote采用了 socket + poll的实现来与系统服务通信而没有采用binder。 可能还有其他原因,比如多线程lock的原因,导致fork无法正常工作。自己的想法不一定对,希望老师能给出正确的答案嗯。

写回答

1回答

风语

2019-09-16

您好,类似的问题之前回答过, https://coding.imooc.com/learn/questiondetail/117347.html

0
0

剖析Framework面试 冲击Android高级职位

一手助力冲刺Android高级职位,一手把握系统底层原理,理清面试思路,提升技术段位

1406 学习 · 187 问题

查看课程