ZKX's LAB

android servicemanager里面的服务 进程 CS5ServiceManager.exe 到底是个什么进程,关闭了又自动开启了

2021-04-23知识0

android servicemanager 怎么实现service管理 ServiceManager是android中比较重要的一个进程,它是在init进程启动之后启动,从名字上就可以看出来它是用来管理系统中的service。比如:InputMethodService、ActivityManagerService等。在ServiceManager中有两个比较重要的方法:add_service、check_service。系统的service需要通过add_service把自己的信息注册到ServiceManager中,当需要使用时,通过check_service检查该service是否存在。主函数(anrdroid4.0/frameworks/base/cmds/servicemanager/service_manager.c)从它的主函数代码开始:int main(int argc,char*argv){struct binder_state*bs;void*svcmgr=BINDER_SERVICE_MANAGER;bs=binder_open(128*1024);if(binder_become_context_manager(bs)){LOGE(\"cannot become context manager(%s)\\n\",strerror(errno));return-1;}svcmgr_handle=svcmgr;binder_loop(bs,svcmgr_handler);return 0;}从main函数中可以看出,它主要做了三件事情:打开/dev/binder设备,并在内存中映射128K的空间。通知Binder设备,把自己变成context_manager进入循环,不停的去读Binder设备,看是否有对service的请求,如果有的话,就去调用svcmgr_handler函数回调处理请求。。

android的进程和服务是什么关系 我的理解是是一种包含的关系,手机运行的时候,会产生很多进程,而每个进程具体负责一部分的功能。而服务里面的任务,包含了多条进程。服务的产生更适合管理。

android PhoneInterfaceManager运行在哪个进程里面 Context.getSystemService(Context.TELEPHONY_SERVICE).你要的是这个吗?

随机阅读

qrcode
访问手机版