Ich erweitere BroadcastReceiver
, und in onReceive()
tue ich, was ich tun muss.
onReceive()
hat ein Timeout, aus der Dokumentation:
es gibt eine Zeitüberschreitung von 10 Sekunden das System erlaubt es vorher zu überlegen der Empfänger blockiert werden und a Kandidat getötet werden
Dies erzeugt ein Problem, wenn ich im Debug-Modus bin. Ich brauche mehr als 10 Sekunden (manchmal). Wenn ich nicht in 10 Sekunden mein gesamtes Debugging mache, wird meine Verbindung geschlossen und das Debuggen wird gestoppt.
Kann ich das Zeitlimit erhöhen oder für Debugging-Zwecke deaktivieren?
Danke.
Um zu verhindern, dass Ihre App zwangsweise schließt, während Sie während des Debuggings an einem Unterbrechungspunkt pausieren, versuchen Sie, die Anwendung Entwicklungstools zu installieren und die Einstellung Debug-App zu aktivieren :
Ermöglicht die Auswahl der Anwendung für debuggen. Sie müssen dies nicht auf festlegen einen Debugger anhängen, aber dies einstellen Wert hat zwei Auswirkungen:
- Es wird verhindern, dass Android einen Fehler auslöst, wenn Sie auf einem anhalten Haltepunkt für eine lange Zeit während Debugging.
Alle Details sind hier: Ссылка
Wenn Sie etwas Kompliziertes in Ihrer onReceive
Methode machen, dann überlegen Sie, ob Ihre BroadcastReceiver
ein Service und geben Sie die Daten aus onReceive
weiter. Die Service
kann dann die längere Verarbeitung durchführen.
Ich habe dieses Problem auch im Debug-Modus festgestellt. Es stellt sich heraus, dass eine andere Sendung gesendet wurde und nicht bearbeitet wurde, weil ich die andere Sendung im Hauptthread debuggte. Android betrachtete meinen Prozess in ANR und tötete den gesamten Prozess.
Ich musste den Code vorübergehend ändern, um die andere Sendung nicht aufzurufen, während ich mein Debugging ausführte.
Tags und Links android timeout broadcastreceiver