背景
经常使用dumpsys命令调试信息,引发了对其内部流程的好奇。
内容
dumpsys
主要工作分为以下4个步骤:
defaultServiceManager()
,获取ServiceManager对象;sm->listServices()
,获取系统所有向ServiceManager注册过的服务;sm->checkService()
,获取系统中指定的Service;service->dump()
,dumpsys命令的核心还是调用远程服务中的dump()
方法来获取相应的dump信息。
例如:dumpsys activity
由前面的原理可知, 先要查询sm->checkService(“activity”),这里得到的是ActivityManagerService,那么也就意味着上述命令等价于调用ActivityManagerService.dump()。 同理其他的dumpsys命令也是类似的方式。
参考链接:
http://gityuan.com/2015/08/22/tool-dumpsys/