BroadcastReceiver onReceive-Zeitüberschreitung

8

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.

    
Alexandru Luchian 10.01.2011, 18:18
quelle

2 Antworten

11

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.

    
elevine 10.01.2011, 18:27
quelle
1

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.

    
Jeremy Stein 14.11.2013 23:35
quelle