Wie rufe ich eine Methode auf, wenn eine Android-App geschlossen ist oder den Fokus verliert?

Da eine App, die ich erstelle, mit sensiblen Daten umgehen kann, möchte ich die SQLite-Datenbank jedes Mal mit dem Server synchronisieren, wenn sich der Benutzer anmeldet, und die Datenbank jedes Mal entfernen, wenn die App den Fokus verliert (weil der Benutzer zum Startbildschirm wechselt oder eine andere App).

Sehenden AktivitätslebenszyklusMeine Idee war, dies durch Leeren der Datenbank im onDestroy jeder Aktivität zu tun. Um den beschriebenen Lebenszyklus zu testen, habe ich einfach alle Lebenszyklusmethoden (onCreate, onStart, onResume, onPause, onStop und onDestroy) überschrieben, einige Protokollnachrichten darin aufgenommen und meine App gestartet.

Die Protokollnachrichten sind in meiner SettingsActivity enthalten. Wenn ich meine App betrete und zu den Einstellungen gehe, wird sie wie erwartet auf Create, onStart und onResume ausgeführt. Wenn ich dann auf eine Einstellung klicke und zum nächsten Bildschirm wechsle, wird onPause und onStop ausgeführt (immer noch wie erwartet). Um zum Einstellungsbildschirm zurückzukehren, klicke ich auf die Schaltfläche "Zurück" und es wird "OnStart" und "OnResume" erneut ausgeführt (immer noch wie erwartet). Wenn ich jetzt erneut auf die Schaltfläche "Zurück" klicke, um zum Ausgangsbildschirm zurückzukehren, wird es (zu meiner Überraschung) "OnPause" ausgeführt. onStop UND onDestroy.

Also meine Fragen;

Warum wird die Aktivität zerstört, wenn die App nicht fertig ist?Und was noch wichtiger ist: Wie kann ich meine CleanUp-Methode ausführen, wenn die App geschlossen wird oder den Fokus verliert?