Pregunta

En caso de obtener datos a través de un cursor y rellenar los datos en la pantalla, como el establecimiento del título de la ventana, en onStart() o onResume()?

onStart() parecería el lugar lógico porque después onStart() la actividad ya puede ser muestra , aunque en el fondo. Cabe destacar que estaba teniendo un problema con un gestionado de diálogo que me hizo replantearme esto. Si el usuario hace girar la pantalla, mientras que el diálogo sigue abierta, y onCreateDialog() onPrepareDialog() se llaman entre onStart() y onResume(). Si las necesidades de diálogo que se basan en los datos es necesario tener los datos antes de onResume().

Si estoy en lo cierto acerca onStart() entonces ¿por qué el Bloc de notas ejemplo dan un mal ejemplo haciéndolo de onResume()? Ver http://developer.android. com / recursos / muestras / libreta / src / com / example / android / libreta / NoteEditor.html NoteEditor.java línea 176 (title = mCursor.getString...).

Además, ¿y si mis lanzamientos Actividad otra actvity / diálogo que cambia los datos de mi cursor está rastreando. Incluso en el caso más sencillo, ¿significa que tengo que manualmente actualización mi pantalla anterior (un detector para un diálogo en la actividad principal), o, alternativamente, que tengo que registrar un ContentObserver, ya que' m ya no actualización de los datos en onResume () (aunque podría actualizar dos veces por supuesto)?

Sé que es una pregunta básica, pero el cuadro de diálogo sólo recientemente, para mi sorpresa, me di cuenta de esto.

¿Fue útil?

Solución

Para responder a su pregunta sobre NoteEditor, sólo tiene que echar un vistazo a las líneas mayores a la que se cite y verá ...

    // Requery in case something changed while paused (such as the title)
    mCursor.requery();

El comentario parece explicar todo. Aunque no he pasado por el ejemplo el Bloc de notas a mí mismo, parece que el autor (s) están construyendo en la capacidad de recuperarse de cambios mientras está en pausa el NoteEditor (y luego reanudó).

Como explica GSree (mientras yo estaba escribiendo esto), no hay una respuesta correcta o incorrecta y simplemente depende de lo que hay que hacer en ese momento del ciclo de vida de actividad.

Otros consejos

Una vez más la solución depende de lo que le convenga.

Si desea que el cursor se puede rellenar previamente una vez por aplicación (y no molestado por cualquier cambio, a continuación, puede hacerlo en onCreate (). Este método se recordará, sólo si el proceso de aplicación está muerto y aplicación se reinicia .

Si desea que el cursor a ser cada vez que se inicia el curso de la vida Rellenado visibles (la mayoría de los casos un servicio / emisión está llamando a su actividad, se debe utilizar onStart ()

Si desea que el cursor se rellena previamente para cada Ciclo de Vida de primer plano de la actividad, se debe utilizar onResume (). Así que si usted tiene un cuadro de diálogo u otra modificación de la subactividad alguna información y por lo tanto usted desee recargar el cursor, lo mejor es que lo haga de onResume (). La desventaja de este método es cada vez la actividad se presenta en primer plano se vuelve a cargar el cursor.

Hope Esto deja claro

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top