1. Nimm jetzt an unserem AGM - Gewinnspiel teil - Informationen zum M1, A2 und A8 findest Du hier, hier und hier!
  1. eppinator, 06.04.2010 #1
    eppinator

    eppinator Threadstarter Neuer Benutzer

    Ich habe einen Service, der mehrere Clients bedienen kann und u.A. Callbacks entgegennimmt.

    Mein Problem ist jetzt: wie kann ich in einer Activity sicherstellen, dass bevor sie beendet wird (zum Beispiel weil Nutzer sie beendet) das Callback vom Service entfernt wird?
    Solang der Service an die Activity gebunden ist, kein Problem. Einfach in onDestroy() service.removeCallback(..) aufrufen.
    Wenn der Service allerdings nicht gebunden ist, muss zunächst erst wieder eine Verbindung hergestellt werden. Und erst dann (nach onServiceConnected) kann das Callback entfernt werden...
    Alles in onDestroy aufzurufen geht allerdings nicht, da das Binden asynchron ist... innerhalb von onDestroy müsste also gewartet werden, bis die Verbindung steht, dann callback entfernen, dann kann die Activity korrekt beendet werden.

    Der Service beendet sich übrigens selbst, sobald keine callbacks mehr registriert sind und keine activity mehr gebunden sind.

    Habe auch mit dem "onCallbackDied" geliebäugelt, das wird allerdings nur aufgerufen wenn eine activity unerwartet beendet wird (abstürzt) und nicht wenn sie regulär beendet wird.

    Jemand eine Idee?