因爲最近要學習FFMpeg,不得不去了解一個枯燥無味的AM命令了。可是am命令真的就這麼無趣嗎?——非也。java
在Android中,除了從界面上啓動程序以外,還能夠從命令行啓動程序。android
相信你們對adb命令很是的熟悉。命令窗口經過adb shell 進入android 的Linux命令界面,輸入am -help看到以下信息:git
使用的是命令行工具am.
am全稱activitymanager,你能使用am去模擬各類系統的行爲,例如去啓動一個activity,強制中止進程,發送廣播進程,修改設備屏幕屬性等等。web
adb shell am start -a android.intent.action.CALL -d tel:10086複製代碼
打開網站blog.csdn.net/androidstar…shell
adb shell am start -a android.intent.action.VIEW -d http://blog.csdn.net/androidstarjack複製代碼
啓動activitybash
am start -n com.uyyahao.app/.MainActivity -es website gityuan.com複製代碼
am start [options] 使用options參數,接下來列舉Activity命令的[options]參數:app
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命令實的實現方式在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取值範圍爲:
更多參考閱讀: