一、开启Activity、服务、广播知识点
1.am介绍
通过adb shell 你可以使用activity manager(am)工具来执行不同的系统操作,如开启一个actions、开启一个activity、强制停止一个线程、发送要给广播、修改设备屏幕属性等等。adb shell命令格式如下:
am <command>
2.Intent介绍
Intent可以理解为不同组件通信的媒介或者信使
Intent可以启动一个Activity,也可以启动一个service,还可以发起一个广播Broadcast
通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求
Intent |
参数 |
说明 |
COMPONENT | -n | 组件名称 格式为:包名/类名 |
ACTION | -a | 指定Intent的执行动作,比如调用拨打电话组件 |
DATA_URL | -d | 表示动作要操纵的数据 |
CATEGORY | -c | category是一个字符串,提供了额外的信息,有关于能够处理这个Intent对象的组件种类 |
EXTRAT | -e | 传递给Intent的额外数据,以Bundle的形式定义,就是一些键值对 |
MIME_TYPE | -t | MIME类型 |
FLAGS | -f | 各种类型的flag,很多是用来指定android系统如何启动activity,还有启动activity后如何对待它 |
PACKAGE | -p | 包名 |
3.启动Activity
启动界面:adb shell am start [参数] <INTENT>
参数 | 说明 |
-D | 开启调试模式 |
-W | 等待启动完成 |
--start-profile <file> | 开始分析器和发送结果<文件> |
--sampling INTERVAL | 使用样本分析间隔微秒 样品(使用--start-profiler)之间 |
-P <FILE> | 应用空闲下来后,停止profile |
-R COUNT | 重复活动退出<统计>次,每个重复之前,活动将会结束 |
-S | 力组织目标应用程序开始前的活动 |
--opengl-trace | 启用跟踪OpenGL函数 |
[—user <USER_ID> | current] | 指定哪些用户运行,如果不指定则使用当前用户 |
4.启动与停止服务
启动服务: adb shell am startservice [参数] <INTENT>
停止服务: adb shell am stopservice [参数] <INTENT>
参数 | 说明 |
--user <USER_ID> | current | 指定哪些用户运行,如果不指定则使用当前用户 |
5.启动广播
启动广播: adb shell am broadcast [参数] <INTENT>
参数 | 说明 |
--user <USER_ID> | current | 指定哪些用户运行,如果不指定则使用当前用户 |
二、内存、进程、性能操作
1.内存操作
获取heap文件: adb shell am dumpheap [参数] <PROCESS>
参数 |
说明 |
-n | 获取native heap而不是managed heap |
--user <USER_ID> | current | 指定哪些用户运行,如果不指定则使用当前用户 |
以桌面时钟为例(com.android.deskclock)
TIP:1.进程名=包名
2.可以使用adb shell pm list package来查看当前手机中的包名
3.必需使用root权限手机
adb shell am dumpheap com.android.deskclock /data/local/tmp/test.hprof
#获取桌面时钟的heap文件,后缀名必需是.hprof
获取到内存快照后可以使用adb pull命令将.hprof文件pull到电脑本地
然后使用命令hprof-conv f:\test.hprof f:\test1.hprof对.hprof进行转换
最后使用mat工具加载转换后的.hprof文件即可对内存进行分析
2.进程操作
强制停止应用:adb shell am force-stop [参数] <PROCESS>
安全停止应用:adb shell am kill [参数] <PROCESS>
停止后台进程:adb shell am kill –all
参数 |
说明 |
--user <USER_ID> | current | 指定哪些用户运行,如果不指定则使用当前用户 |
以浏览器为例(com.android.browser):
adb shell am force-stop com.android.browser
#强制关闭浏览器(不保存数据)
adb shell am kill com.android.browser
#安全停止应用(当应用在前台时无法使用,杀掉后可以使用adb shell ps | find “browser”来查看)
adb shell am kill –all
#按照一定的规则停止所有后台进程
三、调试相关操作
1.性能相关
图片来源于极客学院视频截图
Traceview是android平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到method
2.监听异常
监听crash和ANR:adb shell am monitor [options]
TIP:
1)监听状态下系统崩溃后是无法继续使用的,需要在命令行ctrl+c退出监听才可以