В общем случае система не может гарантировать вызов onDestroy потому что она может убить весь процесс целиком в случае нехватки памяти или большой загруженности.
В таком случае все критические ресурсы закроет ядро линукса. А листенеры и проч. уже не будут иметь значения, ведь они жили в памяти процесса и вместе с его смертью исчезли.
Если вы знаете о других случаях, когда onDestroy не вызывается, пожалуйста сообщите.
Вариант с removeCallbacksAndMessages(null) очень даже хорош. Но программируя на языке со сборщиком мусора хотелось бы меньше уделять внимания таким мелочам как освобождение памяти.
Дело в предпочтениях.
В оригинальной идее Дяди Боба (хехе) он пропагандирует использование терминологии Use Case (interactor), а мы спорить не стали.
Спасибо за наводку на Transaction Script.
Век живи, век учись :)
В таком случае все критические ресурсы закроет ядро линукса. А листенеры и проч. уже не будут иметь значения, ведь они жили в памяти процесса и вместе с его смертью исчезли.
Если вы знаете о других случаях, когда onDestroy не вызывается, пожалуйста сообщите.
Дело в предпочтениях.