【问题标题】:Android dumpsys code flowAndroid dumpsys 代码流程
【发布时间】:2015-08-18 06:57:46
【问题描述】:

我想知道到底是怎么回事

adb shell dumpsys

工作原理以及它是如何在 AOSP 中实现的。 到目前为止我的理解是大部分系统服务都实现了

@Override
public void dump() 

函数并使用它。但是哪个 java 类拥有这个函数,这个 @Override 指向哪个?

【问题讨论】:

    标签: android adb android-source android-debug


    【解决方案1】:

    当调用adb shell dumpsys 时,会执行本机dumpsys 二进制文件,它会向IServiceManager 询问所有系统服务(Android 内置的服务)的列表并调用@987654321 @ 方法,将 FileDescriptor 设置为 STDOUT。更多信息请见平台dumpsys.cpp

    当使用adb shell dumpsys activity service <yourservicename> 时,它会在ActivityManagerService 上调用上面提到的相同转储方法,参数为service <yourservicename>,然后通过调用Service#dump(FileDescriptor fd, PrintWriter writer, String[] args) 将转储请求传递给您的服务(如果它正在运行)。

    【讨论】:

    • @satur9nine 好的,所以我可以覆盖Service#dump 方法并转储我的服务状态(dumpsys activity service <myservicename>),但是有什么方法可以转储我的Binders 状态吗?我有一个 Binder 覆盖 Binder#dump(FileDescriptor fd, PrintWriter fout, String[] args) 方法,但看不到任何从 dumpsys 调用它的方法
    • 我不清楚您要转储什么。当被非系统服务使用时,IBinder 类只是为了传递给客户端以促进通信,它不应该有任何状态供您转储。 系统服务的实现方式与常规应用程序服务不同,因此使用不同的转储方法。
    猜你喜欢
    • 1970-01-01
    • 2013-07-29
    • 2013-07-03
    • 2020-12-21
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多