adb shell dumpsys activity activities調用信息分析


執行命令

adb shell dumpsys activity activities 包名

在實際開發過程中,需要經常查看activity的調用棧信息,經常用到adb shell dumpsys activity activities這個命令,下面對這個命令做一下簡要分析:

通過執行上面命令,可以得到類似如下格式的信息:

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,系統預定義的靜態棧,總共有五種,如下所示:

  1. HOME_STACK_ID:Home應用以及recents app所在的棧

  2. FULLSCREEN_WORKSPACE_STACK_ID:一般應用所在的棧

  3. FREEFORM_WORKSPACE_STACK_ID:類似桌面操作系統

  4. DOCKED_STACK_ID:分屏

  5. 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
..........................

轉自:https://blog.csdn.net/zhang_jun_xiang/article/details/97002514


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM