http://image.search.yahoo.co.jp/search?p=android+%E3%82%BF%E3%82%B9%E3%82%AF%E4%B8%80%E8%A6%A7&ei=UTF-8&fr=mozff
こういうので、ユーザーが履歴を削除すると、onDestroyが呼ばれません。
他にも、アプリを大量に立ち上げてアプリが強制的にkillされるときも呼ばれません。
プロセスがなんらかの要因でkillされる場合は呼ばれないようです。
なので、アプリが終了したときに何かしらの処理を行いたい場合は、onPauseで行うことが推奨されています。
では、onDestroyでは、どういった処理をするといいのでしょうか。
アウトオブメモリー回避用に、変数をnullにする処理はonDestroyでいいのでしょうか。
developerに、「バックグラウンドで実行しているスレッドがある場合、そのスレッドは onCreate() で作成され、onDestroy() で停止される場合があります。 」と書いてありました。
https://developer.android.com/guide/components/activities.html
日本語が変ですが、バックグラウンドで実行したスレッドは、明示的に止めましょう。onDestoryで。ということだと思います。
あと、アウトオブメモリーに関しては、プロセスがkillされている時点で、メモリに残ってなさそうなので、onDestroyまで処理が走ったときにnullにしておけばそこまで問題はなさそうです。