Entiendo que Android Activities
tiene ciclos de vida específicos y eso onCreate
debería anularse y usarse para la inicialización, pero ¿qué sucede exactamente en el constructor? ¿Hay casos en los que también podría / debería anular el Activity
constructor, o nunca debería tocarlo?
Supongo que el constructor nunca debe usarse porque las referencias a Activities
no se limpian por completo (lo que obstaculiza al recolector de basura) y eso onDestroy
está ahí para ese propósito. ¿Es esto correcto?
java
android
garbage-collection
android-activity
oncreate
idolatrar
fuente
fuente
Respuestas:
No puedo pensar en ninguna buena razón para hacer algo en el constructor. Nunca construye una actividad directamente, por lo que no puede usarla para pasar parámetros. Generalmente, solo haz cosas en onCreate.
fuente
Una buena razón para poner cosas en el constructor como había dicho Gili es el uso de campos finales.
Sin embargo, si inicializa cosas en el constructor, entonces la vida útil del objeto será un poco más larga, aunque no lo creo porque
onCreate
se llamaría poco después.A pesar de que es en contra de mi ideal, yo evito el constructor para la inicialización de los miembros de la actividad y confiar en
onResume()
yonPause()
por los recursos que mi aplicación está tratando.Por
onCreate()
lo general, lo uso para hacer el mapeo de vistas a variables locales. Aunque las anotaciones de Android ya lo hacen por mí, rara vez tengo unonCreate()
método para mi actividad. Sin embargo, todavía lo uso en servicio.Sin embargo, si observa los miembros, es posible que esté inicializando
tendrían un método de "cierre" que debe invocar en el momento adecuado (onResume o onPause)
serían parte de la vista, lo que significa que debe inicializarse y luego debe llamarse onCreate
son constantes que no necesitan ser puestas en el constructor de todos modos, solo una final estática sería suficiente. Esto incluye las constantes Paint y Path que se pueden inicializar mediante un bloque estático
fuente
Ahora estoy en un caso que necesita anular el constructor. De hecho, tengo algunas actividades que tienen la misma estructura. Entonces, en lugar de crear muchas actividades, crearé una actividad "Maestra" y las otras heredarán esta. Entonces, necesito anular el constructor de la actividad secundaria para poder inicializar algunas variables que se usarán en los métodos oncreate.
En dos palabras, el constructor te hace simular una "actividad maestra" que puede ser reutilizada por herencia.
fuente
Debe anular el Constructor cuando su actividad tenga parámetros personalizados o desee realizar un seguimiento de las llamadas de las clases heredadas de.
fuente
startActivityForResult
, debo incluir un constructor privado en mi componente personalizado, incluso si esa actividad nunca se iniciará y no tiene elementos visibles, solo uso el material de resultado.