OnDestroy nie zawsze będzie się nazywać. Z dokumentacji cyklu życia --
Gdy Twoja aktywność otrzymuje wywołanie metody onStop(), nie jest już widoczna i powinna zwolnić prawie wszystkie zasoby, które nie są potrzebne, gdy użytkownik ich nie używa. Po zatrzymaniu aktywności system może zniszczyć instancję, jeśli będzie musiała odzyskać pamięć systemową. W skrajnych przypadkach system może po prostu zabić proces aplikacji bez wywoływania ostatniego wywołania zwrotnego onDestroy() aktywności, dlatego ważne jest, aby użyć onStop() do uwolnienia zasobów, które mogą wyciekać z pamięci.
Chociaż metoda onPause() jest wywoływana przed onStop(), należy użyć onStop() do wykonywania większych, bardziej obciążających procesor operacji zamykania, takich jak zapisywanie informacji do bazy danych
zobacz Zatrzymaj swoją aktywność