Ich, weiß, dass es kein onDestroy für Applications gibt. Gibt es denn einer andere Art, die Beendingung der Applikation mitzubekommen!?
Ich meine, irgendwo muss man doch den globalen Code für „Datenbank schließen“ oder „Netzwerkverbindung abbauen“ aufrufen!? Wie macht ihr das in euren Apps?
Da ich in Android noch neu bin, würde mir ein kruzes Code-Snippet (oder ein Verweis auf ein solches) sehr helfen.
Da gibt’s einige Möglichkeiten. Die gängiste ist an einem zentralen Ort mitzuzählen wie viele Activities gestartet und wieder beendet wurden. (Im onCreate, onPause der Activities jeweils). Als Ort dafür eignet sich eine Singleton-Application-Klasse oder so etwas.
Aber generell versuche ich solche Sachen einfach zu verhindern. Was Logik etc. anbelangt verwende ich Services wenn möglich, für’s Netzwerk habe ich Google Volley. Datenbanken verstecken sich bei mir immer hinter Webservices und die lokale SQLite entweder hinter einem ORM-Mapper oder einem ContentProvider. Damit kommt man gar nicht in die Verlegenheit so etwas selbst handeln zu müssen da es das System für einen tut.
Hört sich nach viel Aufwand an (zumindest initial), um ein onDestroy zu implementieren (bzw. zu vermeiden). Das mit dem mitzählen ist eine schöne Idee.
In alles andere müsste ich mich erst mal reinlesen, werde ich aber im Auge behalten.
Kannst mal ein Kurzbeispiel posten, wie du über einen ContentProvider auf SQLite zurgreifst!?
Das mit dem Sammeln aller geöffneten Activities in einer Liste und diese beim Beenden rückwärts abzuarbeiten mit *.finish() habe ich auch schon mal gemacht und es funktionierte sehr gut. (-> Beenden-Button)
Zur Zeit versuche ich es so zu machen, dass ich direkt nach dem startActivity(); this.finish(); aufrufe. Aber bei dieser App macht “zurück” auch kein Sinn. Ein Problem habe ich im Zusammenhang mit Services bekommen, da diese die Activity am Leben erhalten (trotz finish();).
Den ContentProvider musst du dir schon selbser schreiben. Wird hier (ausführlich) erklärt. Ich hab mal angefangen sowas zu schreiben für eine Library die mittlerweile durch Google Volley obsolet gemacht wurde. Auf Github kannst du dir das anschauen.
Ein Problem habe ich im Zusammenhang mit Services bekommen, da diese die Activity am Leben erhalten (trotz finish()
Wenn dem wirklich so ist, ist das ein böser Bug in Android selbst. Hängt vermutlich mit deinem Binding zusammen.