赞
踩
Dumpsys结构图:
实现方式:
dumpsys的代码在mydroid/frameworks/base/cmds/dumpsys/dumpsys.cpp,所有的dump信息都是由重载了Binder中的dump函数的类来完成:
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
...
}
代码很简单,发现所有dump的信息都是由defaultServiceManager)提供的由系统注册的所有service来提供信息。
以meminfo为例:
它是在
mydroid/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java中的setSystemProcess函数处被注册的
SrviceManager.addService("activity", m);
ServiceManager.addService("meminfo", new MemBinder(m));
...
MemBinder->ProcessRecord->各个正在运行状态的ApplicationThread的状态(mydroid/frameworks/base/core/java/android/app/ActivityThread.java),从中得到需要的meminfo信息。
这其中其实牵涉到负责的Android的是如何管理Linux的进程,同时又是如何把Linux的进程管理起来提供各种信息给Java层使用。
上述信息来自网络:
具体命令行参数:
1、 SurfaceFlinger
SurfaceFlinger是Android进行图形界面绘制的服务,根据文档显示,有硬件绘制和GPU绘制两种实现方式。
(来源:http://blog.csdn.net/windskier/article/details/7030732 )
通过dumpsys SurfaceFlinger,除了可以看到显示设备的一些参数开关之外,还能能到如下,360手机卫士主界面是硬件方式绘制的。
另外,还能看到命令行运行时候,手机系统上所有layer信息,如下所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。