优化

所有以 com.android.launcher3 桌面启动器 为基准来调试

  1. 查看任务栈所有activity信息命令

    adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'

  2. 查看gpu 呈现模式数据命令

    adb shell dumpsys gfxinfo com.android.launcher3 > file.log

  3. 调试启动activity

    adb shell am start -D -S -W com.android.launcher3

  4. 查看activity启动时间

    adb shell am start -W com.android.launcher3 (api21+)

    该指令一共给出了三个时间:

    1. ThisTime:最后一个启动的Activity的启动耗时
    2. TotalTime:自己的所有Activity的启动耗时
    3. WaitTime: ActivityManagerService启动App的Activity时的总时间(包括当前Activity的onPause()和自己Activity的启动)

    这三个时间不是很好理解,我们可以把整个过程分解

    1. 上一个ActivityonPause()
    2. 系统调用AMS耗时
    3. 第一个Activity(也许是闪屏页)启动耗时
    4. 第一个ActivityonPause()耗时
    5. 第二个Activity启动耗时

    那么 1. ThisTime表示5(最后一个Activity的启动耗时)。 2. TotalTime表示3.4.5总共的耗时(如果启动时只有一个Activity,那么ThisTimeTotalTime应该是一样的)。 3. WaitTime则表示所有的操作耗时,即1.2.3.4.5所有的耗时。

  5. 计算启动时间——Screen Record

    adb shell screenrecord --bugreport /sdcard/test.mp4(API21+)

    出来的视频左上角会有一行数字:

    前面的4个数字,就是时间戳,即12点31分22秒261 f=后面的数字是当前的帧数 注意: 不是帧率,而是代表当前是第几帧,括号中的数字,代表的是 Dropped frames count ,即掉帧数。

  6. 自主设置打印启动时间

    使用 api reportFullyDrawn() (API19+)

7.查看权限列表命令

`adb shell pm list permissions -d -g`(以分组形式展示 dangerous权限)
  1. 查看Android定时事件(AlarmManager)

    提供了两个用来测试定时事件的命令: adb shell dumpsys alarmadb shell dumpsys activity intents 通过这两个命令可以查看那些操作被放到定时队列中了。