2010-09-15 11 views
9

De acuerdo con el artículo "Fundamentos de la aplicación", la sección "ciclo de vida de los componentes", onResume() siempre se invoca cuando se activa una vista, independientemente del estado anterior.Android - Tutorial de bloc de notas - Ciclo de vida: ¿algún trabajo realizado dos veces?

En el tutorial Bloc de notas, el ejercicio 3, he encontrado algo confuso en NoteEdit.java:
hay una llamada a populateFields() en onCreate(), así como en onResume().
¿No sería suficiente (o incluso mejor) tenerlo solo en onResume()?

En un pequeño ejemplo tal, no hará ningún daño si populateFields() se lleva a cabo dos veces, pero en una más grande de aplicaciones, las cosas pueden ser diferentes ...

Gracias y Saludos,
Markus N.

+2

Yepp, creo que invocarlo en Reesume también debería ser mejor también. – icyerasor

+0

no es exactamente una respuesta, pero si se llama a onStop y luego onRestart, no se invocará onCreate ... aún no se explica por qué se llama en onCreate en todos los casos indeseables, tal vez convención y legibilidad – CrackerJack9

+0

onCreate es bueno para inicializar referencias a cosas, pero desea guardar la mayor parte del manejo de su estado en onResume, que correctamente señala que es el lugar apropiado. ¡También tenga en cuenta que debe hacer eso en AsyncTask para mantener contentos a los usuarios! El diagrama en la página del ciclo de vida de la actividad de Android es la mejor referencia, y si quiere ser estricto, programe una actividad de máquina de estado, porque hay algunas sutilezas bajo la combinación correcta de pantallas de cambio de usuario, etc. –

Respuesta

-1

Puedo ver dónde lo necesita en ambos lugares, si la aplicación se detiene entonces lo necesitaría en Reanudar y si su proceso se cancela o el usuario navega nuevamente a la actividad, entonces lo necesitará en Crear especialmente si está haciendo alguna preprocesamiento.

por la documentación .... para onResume() que recomiendan usar para llamadas de peso ligero a diferencia de onCreate():

"El tiempo de vida de primer plano de una actividad que ocurre entre una llamada a onResume() hasta que una Llamada correspondiente a OnPause(). Durante este tiempo, la actividad se encuentra delante de todas las demás actividades e interactúa con el usuario. Una actividad puede ir frecuentemente entre los estados reasumido y en pausa, por ejemplo, cuando el dispositivo se queda dormido, cuando una actividad el resultado se entrega cuando se entrega un nuevo intento, por lo que el código en estos métodos debe ser bastante ligero. "

El N La aplicación otepad puede querer que se declare una variable si el método ya fue alcanzado por onCreate para no rehacer en onResume().

+0

onResume is siempre llamado (incluso cuando el proceso se mata y se recrea la actividad). –

+0

Sí, pero es posible que los usuarios necesiten hacer algo en el onCreate antes de los diseños similares, por lo que es posible que deba llamar también a esa función. – JPM

+0

Derecha. onCreate es el lugar correcto para crear instancias de diseños y demás. Simplemente estaba diciendo que si se llama a onCreate, siempre se llamará a onResume después de esto. –

1

De un vistazo a Notepad3, diría que es usted correcto. No parece haber ninguna razón para que llamen al populateFields() en ambos onCreate() y onResume(). onResume es suficiente.

Cuestiones relacionadas