{"id":26996,"date":"2023-07-07T10:14:48","date_gmt":"2023-07-07T09:14:48","guid":{"rendered":"https:\/\/www.movilesdualsim.com\/blog\/?p=26996"},"modified":"2023-07-07T10:14:50","modified_gmt":"2023-07-07T09:14:50","slug":"ondestroy-android-kotlin","status":"publish","type":"post","link":"https:\/\/www.movilesdualsim.com\/blog\/ondestroy-android-kotlin\/","title":{"rendered":"onDestroy() &#8211; Android Kotlin"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">El m\u00e9todo onDestroy() en Android Kotlin: Finalizaci\u00f3n de una actividad<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En el desarrollo de aplicaciones Android con Kotlin, el m\u00e9todo <code><strong>onDestroy()<\/strong><\/code> desempe\u00f1a un papel crucial en el ciclo de vida de una actividad. Este m\u00e9todo <strong>es parte integral de la clase <code>Activity<\/code><\/strong> y <strong>se invoca autom\u00e1ticamente antes de que una actividad sea destruida y eliminada de la memoria<\/strong>. En este art\u00edculo, exploraremos en detalle el m\u00e9todo <code><strong>onDestroy()<\/strong><\/code> y su importancia en el desarrollo de aplicaciones para Android.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 es onDestroy()?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code><strong>onDestroy()<\/strong><\/code> es el \u00faltimo m\u00e9todo llamado en el ciclo de vida de una actividad de Android. <strong>Este m\u00e9todo se invoca autom\u00e1ticamente antes de que la actividad sea destruida por completo<\/strong>. Esto puede ocurrir cuando el usuario finaliza la actividad expl\u00edcitamente, el sistema libera memoria debido a la falta de recursos o cuando la actividad finaliza naturalmente despu\u00e9s de haber completado su funci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Funcionalidad del m\u00e9todo onDestroy()<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El m\u00e9todo <code><strong>onDestroy()<\/strong><\/code> cumple varias funciones importantes en el desarrollo de aplicaciones para Android:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Liberaci\u00f3n de recursos<\/strong>: En <code><strong>onDestroy()<\/strong><\/code>, se deben liberar los recursos que ya no son necesarios por la actividad. Esto puede incluir la liberaci\u00f3n de recursos relacionados con la interfaz de usuario, como vistas o adaptadores, o la liberaci\u00f3n de recursos de hardware, como la c\u00e1mara o sensores. Al liberar los recursos adecuadamente, se mejora el rendimiento del dispositivo y se evita el consumo innecesario de recursos.<\/li>\n\n\n\n<li><strong>Finalizaci\u00f3n de tareas pendientes<\/strong>: En este punto, es recomendable finalizar cualquier tarea o proceso que se haya iniciado en la actividad y que a\u00fan est\u00e9 en curso. Esto puede incluir la interrupci\u00f3n de operaciones en segundo plano, la cancelaci\u00f3n de tareas programadas o cualquier acci\u00f3n necesaria para garantizar que la actividad se cierre de manera ordenada.<\/li>\n\n\n\n<li><strong>Liberaci\u00f3n de memoria<\/strong>: El m\u00e9todo <code><strong>onDestroy()<\/strong><\/code> marca el momento en el que la actividad se elimina de la memoria y ya no est\u00e1 disponible. Aqu\u00ed se debe liberar cualquier memoria o recursos adicionales que hayan sido utilizados por la actividad, con el fin de optimizar el rendimiento general del sistema.<\/li>\n\n\n\n<li><strong>Realizaci\u00f3n de acciones finales<\/strong>: <code><strong>onDestroy()<\/strong><\/code> tambi\u00e9n es un buen momento para realizar cualquier acci\u00f3n o limpieza final antes de que la actividad se cierre por completo. Esto puede incluir el cierre de conexiones de red, la finalizaci\u00f3n de operaciones de escritura o cualquier tarea adicional requerida para dejar la actividad en un estado finalizado y limpio.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Ejemplo de uso de onDestroy()<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, se muestra un ejemplo b\u00e1sico de c\u00f3mo se implementa el m\u00e9todo <code>onDestroy()<\/code> en una actividad de Android Kotlin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"kotlin\" class=\"language-kotlin\">class MainActivity : AppCompatActivity() {\n    override fun onDestroy() {\n        super.onDestroy()\n\n        \/\/ Liberar recursos no utilizados\n\n        \/\/ Finalizar tareas pendientes\n\n        \/\/ Liberar memoria adicional\n\n        \/\/ Realizar acciones finales antes de la finalizaci\u00f3n de la actividad\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este ejemplo, <code><strong>onDestroy()<\/strong><\/code> se sobrescribe en la clase <code>MainActivity<\/code>, que extiende <code>AppCompatActivity<\/code>. El m\u00e9todo <code><strong>super.onDestroy()<\/strong><\/code> se llama para asegurarse de que se realicen las tareas de limpieza b\u00e1sicas definidas por la clase base.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, se pueden realizar tareas espec\u00edficas en <code><strong>onDestroy()<\/strong><\/code>, como liberar recursos, finalizar tareas pendientes, liberar memoria adicional y realizar acciones finales antes de que la actividad sea destruida por completo.\u00e7<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Cuando la actividad alcanza el estado \u00abDestroyed\u00bb, cualquier componente que tenga una vida \u00fatil vinculada a la actividad recibir\u00e1 el evento \u00abON_DESTROY\u00bb<\/strong>. En este punto, los componentes del ciclo de vida pueden recuperar cualquier elemento necesario antes de que la actividad finalice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En lugar de incluir l\u00f3gica en la actividad para determinar por qu\u00e9 est\u00e1 finalizando, <strong>se recomienda utilizar un objeto ViewModel para almacenar los datos de vista relevantes para la actividad<\/strong>. Si la actividad se recrea debido a un cambio de configuraci\u00f3n, el ViewModel no necesita realizar ninguna acci\u00f3n, ya que se preservar\u00e1 y se proporcionar\u00e1 a la siguiente instancia de la actividad. Sin embargo, si la actividad no se recrea, el ViewModel puede utilizar el m\u00e9todo <em>onCleared()<\/em> para recuperar cualquier dato necesario antes de que la actividad finalice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es posible diferenciar estos dos casos utilizando el m\u00e9todo <em>isFinishing(<\/em>\u00ab.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando la actividad est\u00e1 finalizando, <strong>onDestroy()<\/strong> es la \u00faltima devoluci\u00f3n de llamada del ciclo de vida que recibe la actividad. Si <strong>onDestroy()<\/strong> se llama debido a un cambio de configuraci\u00f3n, el sistema crea inmediatamente una nueva instancia de la actividad y luego llama a <em><a href=\"https:\/\/www.movilesdualsim.com\/blog\/oncreate-android-kotlin\/\" target=\"_blank\" rel=\"noreferrer noopener\">onCreate()<\/a><\/em> en esa nueva instancia con la nueva configuraci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La devoluci\u00f3n de llamada <strong>onDestroy()<\/strong> debe liberar todos los recursos que a\u00fan no han sido liberados por devoluciones de llamada anteriores, como <em><a href=\"https:\/\/www.movilesdualsim.com\/blog\/onstop-android-kotlin\/\" target=\"_blank\" rel=\"noreferrer noopener\">onStop()<\/a><\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusiones<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El m\u00e9todo <code><strong>onDestroy()<\/strong><\/code> es esencial para finalizar adecuadamente una actividad en el ciclo de vida de una aplicaci\u00f3n Android con Kotlin. Proporciona un punto de enganche para liberar recursos, finalizar tareas pendientes, liberar memoria y realizar acciones finales antes de que la actividad se cierre por completo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al comprender la importancia y el uso adecuado del m\u00e9todo <code><strong>onDestroy()<\/strong><\/code>, podr\u00e1s gestionar la finalizaci\u00f3n de tus actividades de manera efectiva y garantizar una correcta liberaci\u00f3n de recursos en tu aplicaci\u00f3n Android.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Ahora est\u00e1s listo para utilizar el m\u00e9todo <code><strong>onDestroy()<\/strong><\/code> de manera efectiva en tus proyectos de desarrollo de aplicaciones Android con Kotlin!<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;26996&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;2&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 - (2 votos)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;onDestroy() - Android Kotlin&quot;,&quot;width&quot;:&quot;142.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 142.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            5\/5 - (2 votos)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>El m\u00e9todo onDestroy() en Android Kotlin: Finalizaci\u00f3n de una actividad En el desarrollo de aplicaciones Android con Kotlin, el m\u00e9todo onDestroy() desempe\u00f1a un papel crucial en el ciclo de vida de una actividad. Este m\u00e9todo es parte integral de la clase Activity y se invoca autom\u00e1ticamente antes de que una actividad sea destruida y eliminada [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":26998,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,1341],"tags":[],"class_list":["post-26996","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noticias-dualsim","category-programacion-android"],"_links":{"self":[{"href":"https:\/\/www.movilesdualsim.com\/blog\/wp-json\/wp\/v2\/posts\/26996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.movilesdualsim.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.movilesdualsim.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.movilesdualsim.com\/blog\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.movilesdualsim.com\/blog\/wp-json\/wp\/v2\/comments?post=26996"}],"version-history":[{"count":2,"href":"https:\/\/www.movilesdualsim.com\/blog\/wp-json\/wp\/v2\/posts\/26996\/revisions"}],"predecessor-version":[{"id":26999,"href":"https:\/\/www.movilesdualsim.com\/blog\/wp-json\/wp\/v2\/posts\/26996\/revisions\/26999"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.movilesdualsim.com\/blog\/wp-json\/wp\/v2\/media\/26998"}],"wp:attachment":[{"href":"https:\/\/www.movilesdualsim.com\/blog\/wp-json\/wp\/v2\/media?parent=26996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.movilesdualsim.com\/blog\/wp-json\/wp\/v2\/categories?post=26996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.movilesdualsim.com\/blog\/wp-json\/wp\/v2\/tags?post=26996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}