一、 前言
由于最近要学习FFMpeg,不得不去了解一个枯燥无味的AM命令了。但是am命令真的就这么无趣吗?——非也。
在Android中,除了从界面上启动程序之外,还可以从命令行启动程序。
相信大家对adb命令非常的熟悉。命令窗口通过adb shell 进入android 的Linux命令界面,输入am -help看到如下信息:

二、什么是am命令
使用的是命令行工具am.
am全称activitymanager,你能使用am去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等等。
- 拨打电话10086
adb shell am start -a android.intent.action.CALL -d tel:10086
打开网站blog.csdn.net/androidstar…
adb shell am start -a android.intent.action.VIEW -d http://blog.csdn.net/androidstarjack
启动activity
am start -n com.uyyahao.app/.MainActivity -es website gityuan.com
am命令启动activity 三、主要是启动Activity命令
am start [options] 使用options参数,接下来列举Activity命令的[options]参数:
- D: 允许调试功能
- W: 等待app启动完成
-R : 重复启动Activity COUNT次 - S: 启动activity之前,先调用forceStopPackage()方法强制停止app.
– opengl-trace: 运行获取OpenGL函数的trace
– user | current: 指定用户来运行App,默认为当前用户。
– start-profiler : 启动profiler,并将结果发送到 ; P : 类似 –start-profiler,不同的是当app进入idle状态,则停止profiling
– sampling INTERVAL: 设置profiler 取样时间间隔,单位ms;启动Activity的实现原理:
存在-W参数则调用startActivityAndWait()方法来运行,否则startActivityAsUser()。
打开音乐播放器:
am start -a android.intent.action.MUSIC_PLAYER
- 启动一个服务:
或者com.android.music/com.android.music.MediaPlaybackService (这里-n表示组件)
am startservice -a com.smz.myservice (这里-a表示动作,就是你在Androidmanifest里定义的)
发送一个广播:
am broadcast -a <广播动作> 例如: am broadcast -a com.smz.mybroadcast
四、Am的相关参数
- a : 指定Intent action, 实现原理Intent.setAction();
- n : 指定组件名,格式为{包名}/.{主Activity名},实现原理Intent.setComponent();
- d : 指定Intent data URI
- t : 指定Intent MIME Type
- c [-c ] ...]:指定Intent category,实现原理Intent.addCategory()
- p : 指定包名,实现原理Intent.setPackage();
- f : 添加flags,实现原理Intent.setFlags(int ),紧接着的参数必须是int型;
五、am命令实的实现方式
am命令实的实现方式在Am.java,最终几乎都是调用ActivityManagerService相应的方法来完成的,am monitor除外。
比如前面概述中介绍的命令am start -a android.intent.action.VIEW -d gityuan.com, 启动Acitivty最终调用的是ActivityManagerService类的startActivityAsUser()方法来完成的。
再比如am kill-all命令,最终的实现工作是由ActivityManagerService的killBackgroundProcesses()方法完成的。
收紧内存
命令
am send-trim-memory <pid> <level>
例如: 向pid=12345的进程,发出level=RUNNING_LOW的收紧内存命令
am send-trim-memory 12345 RUNNING_LOW。
那么level取值范围为:
- HIDDEN、
- RUNNING_MODERATE、
- BACKGROUND、
- RUNNING_LOW、
- MODERATE、
- RUNNING_CRITICAL、
- COMPLETE。
更多参考阅读:
关于更多
相信自己,没有做不到的,只有想不到的
