Immer ANRs nach Beendigung android-service
Habe ich eine Aktivität startet einen lokalen service mit der bindService() Methode. Funktioniert alles Super, während die app läuft, aber wenn ich beenden Sie die app und lösen Sie aus dem Dienst in der activity onDestroy(), einige Sekunden später sehe ich folgende Fehler zeigen sich in logcat:
09-25 02:13:46.035: WARN/ActivityManager(60): Timeout executing service: ServiceRecord{4401dfc0 net.kicksass.shootingstarbbs.streamstar/.StreamStarService}
09-25 02:13:46.055: INFO/Process(60): Sending signal. PID: 285 SIG: 3
09-25 02:13:46.055: INFO/dalvikvm(285): threadid=3: reacting to signal 3
09-25 02:13:46.103: INFO/dalvikvm(285): Wrote stack traces to '/data/anr/traces.txt'
09-25 02:13:46.103: INFO/Process(60): Sending signal. PID: 60 SIG: 3
09-25 02:13:46.103: INFO/dalvikvm(60): threadid=3: reacting to signal 3
09-25 02:13:46.203: INFO/dalvikvm(60): Wrote stack traces to '/data/anr/traces.txt'
...
09-25 02:13:46.683: ERROR/ActivityManager(60): ANR in net.kicksass.shootingstarbbs.streamstar
09-25 02:13:46.683: ERROR/ActivityManager(60): Reason: Executing service net.kicksass.shootingstarbbs.streamstar/.StreamStarService
09-25 02:13:46.683: ERROR/ActivityManager(60): Load: 3.08 / 1.16 / 0.41
09-25 02:13:46.683: ERROR/ActivityManager(60): CPU usage from 21237ms to 43ms ago:
09-25 02:13:46.683: ERROR/ActivityManager(60): rbbs.streamstar: 7% = 4% user + 2% kernel / faults: 4967 minor 14 major
09-25 02:13:46.683: ERROR/ActivityManager(60): system_server: 3% = 2% user + 1% kernel / faults: 434 minor 8 major
09-25 02:13:46.683: ERROR/ActivityManager(60): com.svox.pico: 1% = 0% user + 0% kernel / faults: 2817 minor 1 major
09-25 02:13:46.683: ERROR/ActivityManager(60): adbd: 0% = 0% user + 0% kernel
09-25 02:13:46.683: ERROR/ActivityManager(60): ndroid.launcher: 0% = 0% user + 0% kernel / faults: 353 minor
09-25 02:13:46.683: ERROR/ActivityManager(60): m.android.phone: 0% = 0% user + 0% kernel / faults: 187 minor
09-25 02:13:46.683: ERROR/ActivityManager(60): putmethod.latin: 0% = 0% user + 0% kernel / faults: 151 minor 1 major
09-25 02:13:46.683: ERROR/ActivityManager(60): .quicksearchbox: 0% = 0% user + 0% kernel / faults: 115 minor 1 major
09-25 02:13:46.683: ERROR/ActivityManager(60): m.android.email: 0% = 0% user + 0% kernel / faults: 140 minor 1 major
09-25 02:13:46.683: ERROR/ActivityManager(60): kswapd0: 0% = 0% user + 0% kernel
09-25 02:13:46.683: ERROR/ActivityManager(60): logcat: 0% = 0% user + 0% kernel / faults: 6 minor
09-25 02:13:46.683: ERROR/ActivityManager(60): ndroid.settings: 0% = 0% user + 0% kernel / faults: 118 minor
09-25 02:13:46.683: ERROR/ActivityManager(60): d.process.acore: 0% = 0% user + 0% kernel / faults: 90 minor
09-25 02:13:46.683: ERROR/ActivityManager(60): id.defcontainer: 0% = 0% user + 0% kernel / faults: 103 minor
09-25 02:13:46.683: ERROR/ActivityManager(60): m.android.music: 0% = 0% user + 0% kernel / faults: 109 minor
09-25 02:13:46.683: ERROR/ActivityManager(60): d.process.media: 0% = 0% user + 0% kernel / faults: 110 minor
09-25 02:13:46.683: ERROR/ActivityManager(60): com.android.mms: 0% = 0% user + 0% kernel / faults: 121 minor 1 major
09-25 02:13:46.683: ERROR/ActivityManager(60): events/0: 0% = 0% user + 0% kernel
09-25 02:13:46.683: ERROR/ActivityManager(60): roid.alarmclock: 0% = 0% user + 0% kernel / faults: 102 minor
09-25 02:13:46.683: ERROR/ActivityManager(60): android.protips: 0% = 0% user + 0% kernel / faults: 102 minor
09-25 02:13:46.683: ERROR/ActivityManager(60): TOTAL: 7% = 3% user + 3% kernel + 0% iowait
Nicht ganz sicher, was hier Los ist, wenn man bedenkt, sowohl die Aktivität und den Dienst beendet haben (onDestroy() ausgeführt hat, die in beiden). Ich vermute, es ist noch ein Faden, der sich irgendwo? Der Dienst übernimmt das erstellen und verwenden der Android-MediaPlayer.
- Haben Sie es gelöst? Wenn ja, könnten Sie bitte aktualisieren Sie Ihre Lösung? Wenn nicht - überprüfen Sie, was Ihre Dienstleistung ist onUnbind() gibt. Wenn ich es auf false zurück, dann funktioniert es Ok, aber wenn das stimmt dann hol ich mir ANR. Aber ich bin ot Ideen, warum die Rückgabe von false behebt es für mich. Ich wünschte, ich könnte Holen Sie sich ein klares Verständnis.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekam ich die ANR-Meldung nach einem Dienst beendet.
Mein problem war, dass die Anwendung der Haupttätigkeit Berufung war "bindService()" zweimal - einmal vor "startService()" und einmal danach.
Entfernen entweder der Aufrufe von bindService() das problem gelöst.
Als ein neues dev selbst mir das passiert, aber ich bin mir nicht ganz sicher wie ich es gelöst. Ich denke, es hatte etwas damit zu tun, die die Bindung an den service. Als pro Google-Dokumentation, wenn Sie binden an einen service, der Dienst startet automatisch, WENN Sie die
BIND_AUTO_CREATE
- flag in IhrembindService
Befehl. Die nicht wollen, dass mein Dienst automatisch starten, sobald es fühlte sich wie es ich wollte nur nicht, verwenden Sie dieBIND_AUTO_CREATE
fahne und ich DENKE, dass es behoben.Wieder, ich konnte völlig falsch, aber das ist etwas zu versuchen.