美文网首页
Android dump系统分析

Android dump系统分析

作者: 艾伦宇 | 来源:发表于2022-12-12 09:43 被阅读0次

    在Android App开发时经常会用到dump来调试。
    之前有一次给状态栏设置颜色时,没有生效。
    所以需要看DisplayPolicy的一些状态,正好在这个类下面能看到有dump方法。

    接下来主要以 dumpsys activity activities 为例,分析这条命令如何解析到DisplayPolicy的。

    阅读下文前,请先阅读此文 dumpsys原理简介
    由上面可以知道 dumpsys activity 会直接到 ActivityManagerService的dump方法。

    先上图,一图胜千言


    dumpsys activity activities流程.png

    接下来逐个分析

    1. PriorityDump 优先级策略
      需要在命令上加--dump-priority,有这几种
      CRITICAL、HIGH、NORMAL,不是很懂!
      从代码调用上看还是会调用回ActivityManagerService
    2. 从 ActivityTaskManagerInternal 到 ActivityTaskManagerService
      在ActivityManagerService中的doDump会调用 mAtmInternal.dump
      而这个mAtmInternal = LocalServices.getService(ActivityTaskManagerInternal.class);
      LocalServices.java提供了几个静态方法
      getService和addService,其实可以理解成就是个全局的Map
      在启动ActivityTaskManagerService时,会调用start方法,从而addService添加进去。
      所以mAtmInternal最后是调用的ActivityTaskManagerService
    3. 解析activities部分
      在ActivityTaskManagerService的dump方法中,会通过if判断,如果参数是activities或a,则调用dumpActivitiesLocked方法

    基本上就是这样,总的来说dump流程是比较简单的,后面的几个类就要结合着你调试的需要来看即可。

    最后还留个尾巴,如果我在查看源码时,发现某个类需要dump出来看看,那么如何找到这个对应的命令呢?
    目前我的做法是将全部dump出来,再反查,这样有点笨,而且比较费时,有没有什么更好的做法 ,有谁知道麻烦告知下,谢谢!

    相关文章

      网友评论

          本文标题:Android dump系统分析

          本文链接:https://www.haomeiwen.com/subject/owhfqdtx.html