OnDestroy ne sera pas toujours appelé. À partir de la documentation sur le cycle de vie --
Lorsque votre activité reçoit un appel à la méthode onStop(), elle n'est plus visible et devrait libérer presque toutes les ressources qui ne sont pas nécessaires lorsque l'utilisateur ne l'utilise pas. Une fois votre activité arrêtée, le système peut détruire l'instance s'il a besoin de récupérer de la mémoire système. Dans les cas extrêmes, le système peut simplement tuer votre processus d'application sans appeler le rappel onDestroy() final de l'activité, il est donc important que vous utilisiez onStop() pour libérer des ressources susceptibles de perdre de la mémoire.
Bien que la méthode onPause() soit appelée avant onStop(), vous devez utiliser onStop() pour effectuer des opérations d'arrêt plus importantes et plus gourmandes en CPU, telles que l'écriture d'informations dans une base de données
voir Arrêter votre activité