OnDestroy non verrà sempre chiamato. Dai documenti del ciclo di vita --
Quando la tua attività riceve una chiamata al metodo onStop(), non è più visibile e dovrebbe rilasciare quasi tutte le risorse che non sono necessarie mentre l'utente non la sta utilizzando. Una volta interrotta l'attività, il sistema potrebbe distruggere l'istanza se è necessario ripristinare la memoria di sistema. In casi estremi, il sistema potrebbe semplicemente uccidere il processo dell'app senza chiamare il callback finale onDestroy() dell'attività, quindi è importante utilizzare onStop() per rilasciare risorse che potrebbero perdere memoria.
Sebbene il metodo onPause() venga chiamato prima di onStop(), dovresti usare onStop() per eseguire operazioni di spegnimento più grandi e con maggiore utilizzo della CPU, come la scrittura di informazioni in un database
vedi Interrompi la tua attività