adb shell dumpsys activity activities调用信息简析

2023-11-16

活动栈

通过执行上面命令,可以得到类似如下格式的信息:

Stack #45: type=standard mode=fullscreen
  isSleeping=false
  mBounds=Rect(0, 0 - 0, 0)
        ......
Stack #0: type=home mode=fullscreen
  isSleeping=false
  mBounds=Rect(0, 0 - 0, 0)
        ......
Stack #1: type=recents mode=fullscreen
  isSleeping=false
  mBounds=Rect(0, 0 - 0, 0)
          ......

其中每个Stack开始代表一个App的活动栈,每个活动栈有一个id,如上所示的Stack #45中的45。

android系统中目前定义了两种类型的Stack,系统预定义的静态栈,总共有五种,如下所示:

0 HOME_STACK_ID:Home应用以及recents app所在的栈

1 FULLSCREEN_WORKSPACE_STACK_ID:一般应用所在的栈

2 FREEFORM_WORKSPACE_STACK_ID:类似桌面操作系统

3 DOCKED_STACK_ID:分屏

4 PINNED_STACK_ID:画中画栈

另一种栈,是系统动态生成的,它的id就是大于4

Stack信息分析

我们抽取dump出的一个stack进行分析:

Stack #4: type=standard mode=fullscreen     //Stack信息
  isSleeping=false
  mBounds=Rect(0, 0 - 0, 0)
    Task id #51                                                     //Task信息
    mBounds=Rect(0, 0 - 0, 0)
    mMinWidth=-1
    mMinHeight=-1
    mLastNonFullscreenBounds=null
    * TaskRecord{e0bdfdf #51 A=android.tplink.sjj.teststack U=0 StackId=4 sz=2}
      userId=0 effectiveUid=u0a128 mCallingUid=u0a28 mUserSetupComplete=true mCallingPackage=com.cyanogenmod.trebuchet
      affinity=android.tplink.sjj.teststack
      intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=android.tplink.sjj.teststack/.MainActivity}                                //启动信息,包括启动源和被启动app的MainActivity
      realActivity=android.tplink.sjj.teststack/.MainActivity
      autoRemoveRecents=false isPersistable=true numFullscreen=2 activityType=1
      rootWasReset=true mNeverRelinquishIdentity=true mReuseTask=false mLockTaskAuth=LOCK_TASK_AUTH_PINNABLE
      Activities=[ActivityRecord{4542de6 u0 android.tplink.sjj.teststack/.MainActivity t51}, ActivityRecord{898d92a u0 android.tplink.sjj.teststack/.FirstActivity t51}]                             //当前栈中Activity记录
      askedCompatMode=false inRecents=true isAvailable=true
      mRootProcess=ProcessRecord{ebe742c 31812:android.tplink.sjj.teststack/u0a128}
      stackId=4
      hasBeenVisible=true mResizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION mSupportsPictureInPicture=false isResizeable=true lastActiveTime=256734507 (inactive for 30s)
      * Hist #1: ActivityRecord{898d92a u0 android.tplink.sjj.teststack/.FirstActivity t51}   //栈中Activity调用历史(最近的)
          packageName=android.tplink.sjj.teststack processName=android.tplink.sjj.teststack
          launchedFromUid=10128 launchedFromPackage=android.tplink.sjj.teststack userId=0
          app=ProcessRecord{ebe742c 31812:android.tplink.sjj.teststack/u0a128}
          Intent { flg=0x10000000 cmp=android.tplink.sjj.teststack/.FirstActivity }
          frontOfTask=false task=TaskRecord{e0bdfdf #51 A=android.tplink.sjj.teststack U=0 StackId=4 sz=2}
          taskAffinity=android.tplink.sjj.teststack
          realActivity=android.tplink.sjj.teststack/.FirstActivity
          baseDir=/data/app/android.tplink.sjj.teststack-Cu_ETALVG7u-Plh9vUC5Ug==/base.apk
          dataDir=/data/user/0/android.tplink.sjj.teststack
          splitDir=[/data/app/android.tplink.sjj.teststack-Cu_ETALVG7u-Plh9vUC5Ug==/split_lib_dependencies_apk.apk, 

                                       ..........................................
          fullscreen=true noDisplay=false immersive=false launchMode=2
          frozenBeforeDestroy=false forceNewConfig=false
          mActivityType=standard
          waitingVisible=false nowVisible=true lastVisibleTime=-33s65ms
          resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
          mLastReportedMultiWindowMode=false mLastReportedPictureInPictureMode=false
      * Hist #0: ActivityRecord{4542de6 u0 android.tplink.sjj.teststack/.MainActivity t51}   //同上,这是在上个历史之前的
          packageName=android.tplink.sjj.teststack processName=android.tplink.sjj.teststack
          launchedFromUid=10028 launchedFromPackage=com.cyanogenmod.trebuchet userId=0
          app=ProcessRecord{ebe742c 31812:android.tplink.sjj.teststack/u0a128}
          Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=android.tplink.sjj.teststack/.MainActivity bnds=[24,204][192,398] }
          frontOfTask=true task=TaskRecord{e0bdfdf #51 A=android.tplink.sjj.teststack U=0 StackId=4 sz=2}
          taskAffinity=android.tplink.sjj.teststack
          realActivity=android.tplink.sjj.teststack/.MainActivity
          baseDir=/data/app/android.tplink.sjj.teststack-Cu_ETALVG7u-Plh9vUC5Ug==/base.apk
          dataDir=/data/user/0/android.tplink.sjj.teststack
          splitDir=[/data/app/android.tplink.sjj.teststack-Cu_ETALVG7u-Plh9vUC5Ug==/split_lib_dependencies_apk.apk, 
          fullscreen=true noDisplay=false immersive=false launchMode=0
          frozenBeforeDestroy=false forceNewConfig=false
          mActivityType=standard
          waitingVisible=false nowVisible=false lastVisibleTime=-36s658ms
          resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
          mLastReportedMultiWindowMode=false mLastReportedPictureInPictureMode=false

                                         .............................................

    Running activities (most recent first):                   //最近该任务栈中活动了的Activity,按最近时间排列
      TaskRecord{e0bdfdf #51 A=android.tplink.sjj.teststack U=0 StackId=4 sz=2}
        Run #1: ActivityRecord{898d92a u0 android.tplink.sjj.teststack/.FirstActivity t51}
        Run #0: ActivityRecord{4542de6 u0 android.tplink.sjj.teststack/.MainActivity t51}

    mResumedActivity: ActivityRecord{898d92a u0 android.tplink.sjj.teststack/.FirstActivity t51}   //当前页面Activity
    mLastPausedActivity: ActivityRecord{4542de6 u0 android.tplink.sjj.teststack/.MainActivity t51}  //最后一个退出前台的Activity

提取信息

通过linux管道机制,用adb打印的信息可以利用grep,sed提取自己需要的信息,可以写一个自动分析脚本

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

adb shell dumpsys activity activities调用信息简析 的相关文章

  • 木马制作——图片木马制作

    木马制作 图片木马制作 一 简单说明 图片木马指的是图片格式的文件木马 图片格式包括jpg png等 原理是将木马程序和图片捆绑在一起 达到伪装的目的 程序可以是脚本语言或者编译语言 在web渗透中 通常将脚本编写的webshell和图片合
  • janus以及coturncentos8的配置_排错填坑完结篇

    前言 查阅了不少资料 网上对janus以及coturn的配置比比皆是 不过 我发现了一个问题 那就是 janus要直接对接coturn作为turn服务器吗 为什么 janus的demo例子 譬如 video room 能不能在手机4g网络上
  • netty文件上传断点续传的演示

    Netty文件上传断点续传的演示 一 理论和协议规范和工具类等 1 实现原理 netty文件上传采用自定义的协议方式实现 断点续传主要是依据RandomAccessFile类的随机读写能力 主要流程是客户端发起请求 将需要上传文件名称 路径
  • Leetcode[数组] 分发饼干 -- 贪心算法

    0 题目描述 leetcode原题链接 分发饼干 1 预排序 双指针 利用贪心算法的思想 每次都先满足胃口最小的孩子 直到有效饼干分完 或者小胃口孩子都被满足则停止分发 class Solution def findContentChild
  • 区块链浏览器搭建

    嗨喽 大家好 不知道大家是否遇见过类似的问题 自己使用以太坊源代码搭建了一个开发网私链时 缺少了主网或者测试网的区块链浏览器这种区块链数据直观展示的工具 那么今天就带大家一起搭建一个适合自己的区块链浏览器使用 文章目录 一 环境准备 1 1
  • 利用BFD协议提高SD-WAN网络的故障收敛时间

    BFD简介 为了减小设备故障对业务的影响 提高网络的可用性 设备需要能够尽快检测到与相邻设备间的通信故障 以便能够及时采取措施 从而保证业务继续进行 现有的故障检测方法主要包括以下几种 1 硬件检测 例如通过SDH Synchronous
  • 第三章 C++之面向对象

    C 基础进阶系列文章 目录 第一章 C 之函数 第二章 C 之引用实现游戏对话框显示 第三章 C 之面向对象 第二章 C 之面向对象 C 基础进阶系列文章 前言 一 什么是面向对象 二 抽象与类 1 C 中的类 2 类的声明 3 创建第一个
  • Java基础知识总结(史上最全)

    Java基础知识总结 写代码 1 明确需求 我要做什么 2 分析思路 我要怎么做 1 2 3 3 确定步骤 每一个思路部分用到哪些语句 方法 和对象 4 代码实现 用具体的java语言代码把思路体现出来 学习新技术的四点 1 该技术是什么
  • openssl编程指南

    openssl编程指南 对于openssl应用编程这方面的详细文档很少 我是通过认真分析openssl源码包中的示例代码来学习并结合man文档来理解它的基本结构的 SSL通讯模型为标准的C S结构 除了在TCP层之上进行传输之外 与一般的通
  • ubuntu18.04使用jlnk下载程序

    ubuntu使用JLink下载程序 JLink安装 JLink官网下载最新的JLink驱动程序 ubuntu使用的是deb包 下载时选J Link Software and Documentation Pack下面的链接 使用sudo dp
  • 基于梯度下降的线性回归(Gradient Descent For Linear Regression)

    概述 梯度下降是很常用的算法 它不仅被用在线性回归上和线性回归模型 平方误差代价函数 在本次 我们要将梯度下降和代价函数结合 我们将用到此算法 并将其应用于具体的拟合直线的线性回归算法里 梯度下降算法和线性回归算法比较如图 左边梯度下降 右
  • Python 队列(Queue)用法

    一 队列 Queue Python的Queue模块中提供了同步的 线程安全的队列类 包括FIFO 先入先出 队列Queue LIFO 后入先出 队列LifoQueue 和优先级队列PriorityQueue 这些队列都实现了锁原语 能够在多
  • Win32程序之进程的原理

  • 面试题更新之-使用 base64 编码的优缺点

    文章目录 base64 编码是什么 使用 base64 编码的优缺点 base64 编码是什么 Base64编码是一种将二进制数据转换为ASCII字符的编码方式 它将三个字节的二进制数据分割成四组 每组6个比特 然后将这些6个比特转换为可打
  • IP有效性检查(C language)

    STATUS ip valid check const char v p Str int i int tmp char p NULL if strlen v p Str gt 15 return ERROR p char v p Str t
  • 基于Logistic回归和Sigmoid函数的分类【机器学习】

    一 认识Logistic回归 LR 分类器 首先 Logistic回归虽然名字里带 回归 但是它实际上是一种分类方法 主要用于两分类问题 利用Logistic函数 或称为Sigmoid函数 自变量取值范围为 INF INF 自变量的取值范围
  • poll方法01

    p select poll 功能 创建poll对象 返回值 poll对象 p register fd event 功能 注册关注的io事件 参数 fd 要关注的IO event 要关注的io事件类型 通用类型 POLLIN 读io事件 po
  • iphone邮箱看不到已发送_不看不知道 教你如何设置iPhone邮箱

    电子邮件是我们日常生活中必不可少的实用工具 尤其是在商务发面发挥着重要的作用 所以 这次我要教大家怎样设置与使用iPhone的电子邮箱功能 电子邮件是我们日常生活中必不可少的实用工具 尤其是在商务发面发挥着重要的作用 所以 这次我要教大家怎

随机推荐

  • Linux Cobbler自动部署装机

    Cobbler自动部署装机 一 实验准备 二 Cobbler自动装机服务搭建步骤 1 导入epel源 2 安装Cobbler以及其相关服务软件包 3 修改cobbler主配置文件 4 使用cobbler check 命令对Cobbler做检
  • ztree实现异步加载(点击节点,请求后台数据,添加数据到对应节点)真正实现了异步树加载数据

    ztree实现异步加载 首先说一下这篇文章和我写的上一篇异步树的区别 上一篇的我实现的是其实是个伪异步加载 因为我实际是把异步的操作写在了节点上面 点击节点时 获取当前节点的ID 取回子节点的数据 然后手动拼接到当前节点下面 真正的异步其实
  • Linux中挖矿病毒清理通用思路

    目录 前言 清理流程 检查修复DNS 停止计划任务 取消tmp目录的可执行权限 服务排查 进程排查 高CPU占用进程查杀 计划任务清理 预加载劫持清理 系统命令变动排查 中毒前后可执行文件排查 系统配置文件排查 小结 前言 在被植入挖矿病毒
  • 制作USB多系统启动盘

    制作USB多系统启动盘 背景 现在的操作系统更新越来越频繁了 如果用刻录光盘来安装系统的话 会导致大量的浪费 而且光盘寿命太短 一旦划伤 基本上就用不了了 所以想办法使用USB来做为启动盘 利用ISO直接安装系统 这样方便 而且更为灵活 想
  • MySQL--彻底删除数据, 修改/设置密码

    目录 MySQL彻底卸载的方法 修改 设置密码 1 使用 SET PASSWORD 命令 2 使用mysqladmin修改密码 3 UPDATE直接编辑user表 4 忘记密码 此文的背景是 昨天反复安装了几次 刚开始一直无法正常启动使用
  • 语义分割python教学_语义分割:基于openCV和深度学习(二)

    语义分割 基于openCV和深度学习 二 Semantic segmentation in images with OpenCV 开始吧 打开segment py归档并插入以下代码 Semantic segmentation with Op
  • VMware虚拟机禁止防火墙启动

    每次打开虚拟机时候 都会启动防火墙 使用起来很不方便 可以做到永久关闭防火墙 查看firewall状态 systemctl status firewalld service 停止firewall systemctl stop firewal
  • 线段树(单点修改+区间查询)(区间修改+区间查询)

    什么是线段树 线段树 是一种二叉搜索树 它将一段区间划分为若干单位区间 每一个节点都储存着一个区间 它功能强大 支持区间求和 区间最大值 区间修改 单点修改等操作 线段树的思想和分治思想很相像 线段树的每一个节点都储存着一段区间 L R 的
  • (三)Fabric2.0启动网络脚本配置剖析

    总目录 0 如何利用区块链保护知识产权 一 HyperLedger Fabric 2 0 release测试网络部署 二 Fabric2 0 first network 生成配置说明 三 Fabric2 0启动网络脚本配置剖析 四 Fabr
  • 初识MySQL(一)

    目录 一 初识MySQL数据库 Database 1 1 为什么要有数据库 1 2 关于数据库的大体分类 二 数据库的操作 2 1 如何创建一个库 2 1 1 SQL方式 2 1 2 图形化界面方式 My SQL Workbench 2 2
  • python socket基于TCP/IP协议实现多人聊天室

    文章目录 前言 一 实现原理 二 queue队列 三 代码实现 四 需要注意的地方 五 总结 前言 所谓套接字 Socket 就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象 一个套接字就是网络上进程通信的一端 提供了应用层进程
  • Vue简单示例——weex跨平台解决方案

    简单介绍 Weex的出现主要解决了Web开发的应用频繁发布版本和多端研发两个问题 同时解决了前端语言性能差异和显示效果受限的问题 什么是weex Weex是使用流行的Web开发体验来开发高性能原生应用框架 使开发者可以用JS语言和前端开发经
  • H264/AVC-帧内预测

    I宏块使用帧内预测编码压缩数据 根据相邻宏块数据恢复当前宏块信息 值得注意的一点是 帧内预测所参考的相邻宏块数据是deblocking之前的像素值 因为上一宏块的deblocking依赖当前宏块像素值 但当前宏块数据还未重建 1 帧内预测类
  • Python 综合面试题(附参考答案)

    Python 综合面试题 第一部分 Python 基础 如何理解 python 中的深度拷贝和浅拷贝 浅拷贝旨在减少内存的占用 深拷贝可以在做数据的清洗 修改或者入库 的时候 对原数据进行复制一份 以防数据修改之后 找不到原数据 深浅拷 贝
  • PID算法与PID自整定算法

    本文是由于研发恒温槽项目故需要了解PID控制算法和PID自整定算法 为方便本人日后需要故作此记录 直接粘贴代码吧 这是PID位置式控温算法 函数名 void Pid positional float speed 用途 PID输出 说明 参数
  • 手撕代码:判断二进制串除以3的余数

    题目描述 给定一个长二进制串 求其除以3的余数 思路分析 这里涉及到状态机 由于除以三的余数只可能是0 1 2 所以状态机就有三个状态 现在逐个遍历二进制串 初始余数为0 当遇到1时 状态转到1 遇到0时状态仍为0 对于状态1 判断分别遇到
  • win8 java 32位_java8离线安装包32位 官方最新版

    java8电脑版安装包是一款全新的java编程软件 该软件有着良好的操作性 支持多语种编程 当然也包括中文编程 支持winxp win7 win8 win10等基本微软系统进行操作 全面升级现有Java编程模式 带来一项协同开发的JVM J
  • Opencv.js+Hbuilder快速打造一个图像处理App

    一 开发工具简介 1 Opencv js Opencv 是一个常见的图像处理库 通常使用C 和python去调这个库对图像 视频流进行处理 而js版的opencv可以进一步丰富前端对于图像的处理 目前opencv js版映入了与其他版本基本
  • 安信实验室教你如何实现Windows自动安装!

    用户接入硬件后 Windows 自动下载安装或更新厂商的驱动软件 特点 1 产品的驱动程序及软件已放入微软官方驱动程序库 全世界用户都可以很快捷和方便地自动安装厂商自定义的软件 驱动通过微软官方认证 最佳安全性保障和信用背书 应用软件可以自
  • adb shell dumpsys activity activities调用信息简析

    活动栈 通过执行上面命令 可以得到类似如下格式的信息 Stack 45 type standard mode fullscreen isSleeping false mBounds Rect 0 0 0 0 Stack 0 type hom