当前位置: 首页 > 知识库问答 >
问题:

如何读取“ADB shell dumpsys alarm”输出

包永新
2023-03-14

所以,以下是问题:

>

  • 挂起的警报批次:23

    a.“23”是当前活动的、预定的警报吗?

    +47S271MS正在运行,0次唤醒,2次警报:com.username.weatherinfo
     · act=com.username.receivers.cyclicweatherupdater.weather_update_action
     · · CMP={com.username.weatherinfo/com.username.receivers.cyclicweatherupdater}

    a.'+47S271ms'是否意味着此警报将在47秒内触发?
    b.什么是“0唤醒”-警报从未触发?
    C。什么是“2个警报”?
    d。“com.username.weatherinfo”是否代表在上下文字段中给出的挂起意图的包的名称?
    E。“act”的意思是为了意图而采取的行动吗?
    F。什么是“CMP”?我明白了,它是由包名和类名组成的--但是它们是从哪里来的呢?从意图构造器?g.为什么部分警报只有“ACT”或“CMP”?我假设,没有“cmp”字段的警报是为了隐含的广播意图。但是,为什么有没有“行动”字段的警报?

    警报统计:

    A.这是什么?

  • 共有1个答案

    杜联
    2023-03-14

    我知道这个线程是旧的,但答案不容易找到,可能是有用的。我花了很多时间来理解这些信息的含义。

    Pending alarm batches: 23
    

    报警分批组织。如文档中所述:

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

    Batch{4293d3a8 num=1 start=1369361 end=1407261}:
    
      null
    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}}
    

    其中:

      null

    为了了解这一点以及之后的其他输出项,我必须深入研究AlarmManagerService.java源代码。

    为了使某些报警器正常工作,设备必须被唤醒,并且在所有必要的广播发送完毕之前不应该再进入Hibernate状态。内部变量mBroadcastRefCount初始化为0,并随着要发送的广播排队而递增。每次发送广播时,广播会递减,当广播返回到0时,wakelock被释放,设备可以返回Hibernate状态。

    本节显示自上次重新启动系统以来运行的所有警报的统计信息。这是您可以查看是否触发了您在过去设置的警报,如果他们唤醒了电话,等等,这些条目的格式是覆盖接下来。

    警报统计条目如下所示:

    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}
    

    其中第一行:

      null
      null

    或者,如果警报触发了广播,则条目可能如下所示:

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

    与:

    • act=...是广播的意图的名称
     类似资料:
    • 问题内容: 我有一个Java应用程序,该应用程序存在一些性能问题,有人建议我以verbose:gc模式运行它。这已经完成,但是我不知道如何解释日志记录。是否可以向我解释这一切的含义,或者为我提供提高性能的建议? 可以在以下位置找到输出日志:http : //pastebin.com/uDNPEGcd 在此先感谢您,马尔滕 问题答案: 在每个gc集合之后立即打印,并打印有关每个世代内存详细信息的详细

    • 问题内容: 我想制作一个Servlet过滤器,该过滤器将在处理和完成响应后读取响应的内容,并以XML或PDF或其他方式返回该信息。但是我不确定如何从HttpServletResponse对象中获取任何信息。我如何获得此信息? 问题答案: 将此添加到过滤器java文件。 使用以下代码: 现在,content变量具有输出流。您也可以对二进制内容执行此操作。

    • 问题内容: 我有以下代码: 试图从阅读器中读取内容已挂起。我该如何解决?我该如何寻找正在发生的事情? 问题答案: 在等待命令完成的同时,必须连续读取输出。否则,如果命令产生足够的输出以填充输出缓冲区,则该命令将挂起,等待缓冲区被消耗,这将永远不会发生。这样您就陷入僵局。 以下示例在监视命令状态的同时连续读取stdout和stderr。它基于官方的JSch 示例 (仅添加了stderr的阅读)。 如

    • 我在一个项目中使用Keras,我不明白Keras是如何使用数据输入的,也就是说Keras在创建第一层时是如何读取我们的输入数据的。 例如: 型号=顺序() 在这个模型中,有10个神经元和一个三维输入意味着什么?如果输入数据有100个示例(矩阵数据中的行数),Keras如何使用它们? 非常感谢。

    • 问题内容: 我一直在寻找如何读取jpeg图像然后显示图像的示例。 尝试了以下代码,但我认为编码需要设置为缓冲区。使用console.log它输出数据的“对象”。 问题答案: 这是您读取整个文件内容的方法,如果成功完成,则启动一个Web服务器,该Web服务器响应每个请求显示JPG图像: 请注意,服务器由“ readFile”回调函数启动,并且响应标头具有。 [编辑] 您甚至可以将image 与数据U

    • 我想从STDIN读取输入。我在C中使用fork()方法。我有子进程和父进程。我的输入是多行的。父进程只等待子进程终止,子进程只读取第一行,子进程终止后,父进程继续读取。我想要打印行。例如;输入-> null 子进程打印“星期一”,父进程打印“星期二”和“星期三”。一旦到达文件结尾,程序就会终止。 ./program