Liste der aktiven PendingIntents in AlarmManager abrufen

77

Gibt es eine Möglichkeit, eine Liste der aktiven PendingIntents in einem Gerät zu erhalten?

Ich fange an zu arbeiten AlarmManagerund möchte sehen, ob meine PendingIntents korrekt erstellt und entfernt wurden.

Es wäre auch schön zu sehen, welche anderen da PendingIntentsind, genauso wie die Neugier, zu sehen, ob eine App "zusätzliche Arbeit" leistet.

BrainCrash
quelle

Antworten:

170
adb shell dumpsys alarm > dump.txt

dump.txt:

Current Alarm Manager state:

  Realtime wakeup (now=1309361618777):
  RTC_WAKEUP #5: Alarm{4822f618 type 0 com.google.android.gsf}
    type=0 when=1309882326582 repeatInterval=522747000 count=0
    operation=PendingIntent{47dd3740: PendingIntentRecord{4822aeb8 com.google.android.gsf broadcastIntent}}
  ...
  RTC #5: Alarm{4810f9d8 type 1 com.tmobile.selfhelp}
    type=1 when=1309445979715 repeatInterval=86400000 count=1
    operation=PendingIntent{4815a5c8: PendingIntentRecord{4810f960 com.tmobile.selfhelp startService}}
  RTC #4: Alarm{4810f668 type 1 com.tmobile.selfhelp}
    type=1 when=1309445959620 repeatInterval=86400000 count=1
    operation=PendingIntent{480996e8: PendingIntentRecord{480214a0 com.tmobile.selfhelp broadcastIntent}}
  ...

  Elapsed realtime wakeup (now=2110632):
  ELAPSED_WAKEUP #5: Alarm{481c24e0 type 2 com.google.android.apps.maps}
    type=2 when=2147485512925 repeatInterval=0 count=0
    operation=PendingIntent{47d1d3a8: PendingIntentRecord{481a2600 com.google.android.apps.maps broadcastIntent}}     
  ...
  ELAPSED #1: Alarm{4829ce98 type 3 android}
    type=3 when=2512653 repeatInterval=0 count=0
    operation=PendingIntent{47eabda8: PendingIntentRecord{47f20250 android broadcastIntent}}
  ELAPSED #0: Alarm{480f0198 type 3 com.mixzing.basic}
    type=3 when=2439998 repeatInterval=0 count=0
    operation=PendingIntent{48100dd8: PendingIntentRecord{480ff5a0 com.mixzing.basic broadcastIntent}}

  Broadcast ref count: 0

  Alarm Stats:
  com.google.android.location
    3ms running, 1 wakeups
    1 alarms: act=com.google.android.location.ALARM_WAKEUP flg=0x4
  com.google.android.gsf
    274ms running, 4 wakeups
    1 alarms: flg=0x4
    1 alarms: act=com.google.android.intent.action.GTALK_RECONNECT flg=0x4
    2 alarms: act=com.google.android.intent.action.GTALK_HEARTBEAT flg=0x4
 ...
-------------------------------------------------------------------------------
inazaruk
quelle
1
Oh, es stellt sich heraus, dass es einen gibt. Versuchen Sie es mit dumpsys alarm. Ich habe die Antwort aktualisiert.
Inazaruk
2
Nur überprüft, und kann bestätigen, dass es nicht möglich ist, dies auf dem Gerät zu tun, es sei denn, Sie haben root "Berechtigungsverweigerung: AlarmManager kann nicht von pid = 16910, uid = 10120 ausgegeben werden"
Koi-Fütterung
1
Wofür steht count property? Ich habe eine große Menge in meiner App. type=3 when=+4m7s342ms repeatInterval=300000 count=4703Bedeutet das, dass 4703 Alarme eingerichtet wurden?
Sergii Pechenizkyi
1
@plastiv - countmisst zum Wiederholen von Alarmen, wie oft ein Alarm hätte ausgelöst werden sollen, aber nicht (dh weil das Telefon geschlafen hat). Wenn count > 1, Alarm wurde mindestens einmal verpasst. Das repeatInterval=300000 count=4703bedeutet, dass der Alarm alle 5 Minuten wiederholt werden soll, aber 4702 Mal übersehen wurde - ich glaube, das Telefon war für ein paar Tage ausgeschaltet.
Kamituel
1
@ Koi-Fütterung - Ich bin nicht verwurzelt und hatte keine Probleme beim Ausführen des Dump-Befehls (Ausführen eines Motorola Moto G)
RTF
3

adb shell dumpsys alarm> dump.txt ist der richtige Weg und Sie benötigen dafür keine Root-Berechtigung. Aber was Sie von oben bekommen, kann sehr verwirrend sein. Um diesen Dump vollständig zu verstehen, sollten Sie die Antwort von morphatic hier lesen .

Nicht gefangene Ausnahme
quelle