안드로이드 라이프사이클은 상당히 복잡한 토픽입니다. 경험이 상당히 많은 개발자들도 늘 문서를 들여다 보고 테스트를 해봐야 할 정도록 헷갈리는 것 중의 하나입니다.
onDestory는 100%호출 된다는 보장이 없는 콜백입니다. 간혹 호출되지 않고 앱이 종료될 수도 있습니다. 예를 들면, 안드로이드 시스템이 메모리가 부족하거나 하는 등의 이유로 앱을 킬할 수도 있기 때문입니다. 따라서 콜백같은 경우는 onStart/onStop, onResume/onPause 등을 통해서 등록/해제를 하는 것이 확실한 방법입니다. 그리고 GC가 메모리를 콜렉트하는 것은 시스템 상황에 전적으로 달려있습니다. 이전에 제가 테스트를 해봤을 때는 첫번재 액티비티에서 두번째 액티비티를 띄운 후 두번째 액티비티를 종료한 후에도 상당한 시간동안 두번째 액티비티가 메모리에 존재하는 걸 확인한 적이 있습니다. 이 부분이 제가 생각하는 안드로이드 개발의 가장 골치 아픈 부분 중의 하나입니다.