OnDestroyが常に呼び出されるとは限りません。ライフサイクルドキュメントから-
アクティビティがonStop()メソッドの呼び出しを受信すると、そのアクティビティは表示されなくなり、ユーザーが使用していないときに不要なほとんどすべてのリソースを解放する必要があります。アクティビティが停止すると、システムメモリを回復する必要がある場合、システムがインスタンスを破棄する可能性があります。極端な場合、システムはアクティビティの最後のonDestroy()コールバックを呼び出さずに、単にappprocessを強制終了する可能性があるため、onStop()を使用してメモリをリークする可能性のあるリソースを解放することが重要です。
onPause()メソッドはonStop()の前に呼び出されますが、データベースへの情報の書き込みなど、より大規模でCPUを集中的に使用するシャットダウン操作を実行するにはonStop()を使用する必要があります
アクティビティの停止
を参照してください