¿El metodo finalize() de una clase en java hace exactamente lo mismo que el metodo ondestroy() para android?

publicado por: Anonymous

Realmente es algo curioso, ya que el método finalize por defecto en la clase object hace tareas de limpieza antes que el objeto se a eliminada de la memoria, que es algo que también hace la clase onDestroy.

Asi que me surge esa duda en que se diferencian y por que para los desarrolladores de android decidieron implementar onDestroy() si se ya se tenia finalize().

Estoy investigando acerca de ello pero que opinan ustedes.

solución

Se pueden decir que son similares :

  • El método onDestroy() es llamado cuando se finaliza la Activity y se realiza antes de destruir la Activity, ya sea porque se llamo el método finish() o porque el sistema operativo requiere memoria.

  • El método finalize() se llama cuando el objeto es finalizado por el GC.

Son similares porque: en ambos métodos puedes realizar acciones antes de ser destruida la Activity o el Objeto.

La diferencia es: finalize() es llamada por el recolector de basura (Gargage Collector) mientras que onDestroy() se llama cuando se ejecuta el método finish () o porque el sistema está destruyendo temporalmente esta instancia de la actividad para ahorrar memoria.**


De la documentación:

finalize() Llamado por el recolector de basura (Gargage Collector) de un objeto cuando la
recolección de elementos no utilizados determina que no hay más
referencias al objeto.

onDestroy() La última llamada que reciba antes de que la actividad sea
destruida. Esto puede suceder ya sea porque la actividad está
terminando (alguien llamó finish () o porque el sistema está
destruyendo temporalmente esta instancia de la actividad para ahorrar
memoria. Puede distinguir estos dos escenarios con el método
isFinishing ().

El método finalize() para una Activity existe, pero recuerda algo importante, no trates de ser más inteligente que el Garbage Collector, ya que el decidirá cuando eliminar la instancia. Lo comento porque anteriormente era común ver esta llamada para tratar de liberar memoria ⤜(ʘ_ʘ)⤏, además su ejecución la determina el Garbage Collector.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *