Android 如何阅读;adb外壳转储系统报警“;输出

Android 如何阅读;adb外壳转储系统报警“;输出,android,adb,alarmmanager,Android,Adb,Alarmmanager,我正在努力正确设置警报,并理解取消和重新安排警报的机制 我发现,有一个adb命令可以检索设备上计划的所有报警,但我还没有找到解释输出格式的文档 我明白,我在这里要求很多解释,所以如果有人能提供一个链接,详细解释“adb shell dumpsys alarm”,我将不胜感激 因此,以下是问题: 待处理报警批次:23 a。“23”是当前活动的、计划的报警吗 批处理{4293d3a8 num=1 start=1369361 end=1407261}: RTC#0:Alarm{4293d358 t

我正在努力正确设置警报,并理解取消和重新安排警报的机制

我发现,有一个adb命令可以检索设备上计划的所有报警,但我还没有找到解释输出格式的文档

我明白,我在这里要求很多解释,所以如果有人能提供一个链接,详细解释“adb shell dumpsys alarm”,我将不胜感激

因此,以下是问题:

  • 待处理报警批次:23

    a。“23”是当前活动的、计划的报警吗

  • 批处理{4293d3a8 num=1 start=1369361 end=1407261}:
    RTC#0:Alarm{4293d358 type 1 com.android.chrome}
    类型=1 WheneReleased=1369361 when=+19s304ms window=-1 repeatInterval=0计数=0
    操作=PendingEvent{429e4500:PendingEventRecord{429dbbc8 com.android.chrome broadcastIntent}

    a。什么是“num=1”、“start=1369361”和“end=1407261”
    b、 "我想,RTC’代表RTC报警
    C“0”代表什么
    D什么是“类型=1”
    E“when=+19s304ms”是否表示报警将在19秒内触发
    F什么是“窗口=-1”
    G“repeatInterval=0”是否表示这是非重复报警
    H“count=0”是否意味着由于手机处于睡眠状态,此警报没有延迟
    i、 "operation=PendingIntent{…}代表挂起的意图,我认为它将由报警触发

  • 广播引用计数:0

    a。这是什么

  • 顶部警报:

    a。这是什么

  • +47s271ms运行,0次唤醒,2次警报:com.username.weatherinfo
    act=com.username.receivers.CyclicWeatherUpdater.WEATHER\u UPDATE\u ACTION
    cmp={com.username.weatherinfo/com.username.receivers.CyclicWeatherUpdater}

    a。“+47s271ms”是否表示此警报将在47秒内触发
    B什么是“0唤醒”-从未触发警报
    C什么是“两个警报”
    D“com.username.weatherinfo”代表的是上下文字段中给定给挂起意图的包的名称吗
    E“行为”是指为意图而发送的行为吗
    F什么是“cmp”?我明白了,它是由包名和类名组成的——但是它们是从哪里来的呢?来自意图构造器? G为什么部分报警只有“act”或“cmp”?我假设,没有“cmp”字段的报警用于隐式广播意图。然而,为什么会有没有“act”字段的警报

  • 报警统计:

    a。这是什么


  • 我意识到这条线索很古老,但答案不容易找到,而且可能有用。我花了很长时间研究这些信息的含义

    问题1:批次 警报被组织成批次:

    从API 19开始,传递给此方法的触发时间被视为不精确:在此时间之前不会发出警报,但可能会延迟并在一段时间后发出。操作系统将使用此策略,以便在整个系统中一起“批处理”报警,从而最大限度地减少设备需要“唤醒”的次数,并最大限度地减少电池的使用。一般来说,只要警报安排在遥远的将来,在不久的将来安排的警报不会延迟

    每个批次可能有多个警报。在这种情况下,有23批报警,这意味着计划的报警可能远远超过23个。在
    dumpsys报警输出中,描述每个批次的行如下所示:

    Batch{4293d3a8 num=1 start=1369361 end=1407261}:
    
    其中:

    • 4293d3a8
      是与批次关联的内部id
    • num=1
      是此批次中的报警数。在这种情况下,批次中只有一个警报
    • start
      end
      数字表示自系统上次重新启动以来经过的毫秒数,也大致表示应触发批次中报警的时间窗口
    问题2:警报 每个警报由三行描述,如下所示:

    RTC #0: Alarm{4293d358 type 1 com.android.chrome} 
        type=1 whenElapsed=1369361 when=+19s304ms window=-1 repeatInterval=0 count=0
        operation=PendingIntent{429e4500: PendingIntentRecord{429dbbc8 com.android.chrome broadcastIntent}}
    
    com.example.someapp +1s857ms running, 0 wakeups:
        +1s817ms 0 wakes 83 alarms: cmp={com.example.someapp/com.example.someapp.someservice}
        +40ms 0 wakes 1 alarms: cmp={com.example.someapp/com.example.someapp.someotherservice}
    
    android +4m51s566ms running, 281 wakeups:
        +2m46s583ms 0 wakes 1224 alarms: act=android.intent.action.TIME_TICK
        +1m25s624ms 89 wakes 89 alarms: act=android.content.syncmanager.SYNC_ALARM
        +52s898ms 0 wakes 41 alarms: act=com.android.server.action.NETWORK_STATS_POLL
        ...
    
    其中:

    • 第一部分是
      RTC_WAKEUP
      RTC
      appeated_WAKEUP
      appeated
      中的一部分,表示报警的
      类型,分别对应于整数值0-3
    • #0
      是批次内的报警编号,其中编号从0到
      n-1
      ,其中
      n
      是批次中的报警编号。如果您的报警与其他报警一起批处理,则“未来最远时间”when=“定义批处理中所有报警的触发时间
    • 4293d358
      是与报警关联的内部id号
    • com.android.chrome
      是设置报警的类的包名
    • type=1
      ,报警类型,见上面的第一个项目符号
    • WheneReleased=1369361
      指自系统启动后触发此警报的毫秒数(大约)
    • when=+19s304ms
      表示从调用
      dumpsys alarm
      时起,报警将在19秒内触发,即304毫秒。类似地,类似于
      +2d13h29m03s882ms
      的值表示2天13小时29分钟的相对时间。。。将来
    • window=
      指的是两个内部常量之一,它们与报警的批处理方法有关
      AlarmManager.WINDOW_EXACT=0
      并在使用
      setExact()
      setAlarmClock()
      计划报警时设置<代码>AlarmManager.WINDOW\u启发式=-1
    并在使用
    setInexactRepeating()
    计划报警时设置。否则,该值由API版本决定。对于API<19(KitKat),使用
    WINDOW\u-EXACT
    ,对于API>=19,使用
    WINDOW\u-HEURISTIC
    i
    android +4m51s566ms running, 281 wakeups:
        +2m46s583ms 0 wakes 1224 alarms: act=android.intent.action.TIME_TICK
        +1m25s624ms 89 wakes 89 alarms: act=android.content.syncmanager.SYNC_ALARM
        +52s898ms 0 wakes 41 alarms: act=com.android.server.action.NETWORK_STATS_POLL
        ...