學習FFmpeg必備,那些不容錯過的Am命令解析

1、 前言

因爲最近要學習FFMpeg,不得不去了解一個枯燥無味的AM命令了。可是am命令真的就這麼無趣嗎?——非也。java

在Android中,除了從界面上啓動程序以外,還能夠從命令行啓動程序。android

相信你們對adb命令很是的熟悉。命令窗口經過adb shell 進入android 的Linux命令界面,輸入am -help看到以下信息:git

am命令
am命令

2、什麼是am命令

使用的是命令行工具am.
am全稱activitymanager,你能使用am去模擬各類系統的行爲,例如去啓動一個activity,強制中止進程,發送廣播進程,修改設備屏幕屬性等等。web

  • 撥打電話10086
    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命令啓動activity
    am命令啓動activity

    3、主要是啓動Activity命令

    am start [options] 使用options參數,接下來列舉Activity命令的[options]參數:app

  • 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複製代碼

4、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型;

5、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。

更多參考閱讀:

blog.csdn.net/u010164190/…

關於更多

2017上半年技術文章集合—184篇文章分類彙總

高級UI特效仿直播點贊效果—一個優美炫酷的點贊動畫

一個實現錄音和播放的小案例

NDK項目實戰—高仿360手機助手之卸載監聽

相信本身,沒有作不到的,只有想不到的

技術+職場
技術+職場
相關文章
相關標籤/搜索