Android – ¿Qué está mal con el método onStart?

Estoy tratando de entender el ciclo de vida de la actividad de Android. Para ello, he creado Actividad en la que he anulado todos los métodos de ciclo de vida (onCreate, onStart, onRestart, onResume, onPause, onStop, onDestroy):

public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Log.d("ActivityTutorial", "onCreate"); } @Override protected void onStart() { super.onStart(); Log.d("ActivityTutorial", "onStart"); } @Override protected void onRestart() { super.onRestart(); Log.d("ActivityTutorial", "onRestart"); } @Override protected void onResume() { super.onResume(); Log.d("ActivityTutorial", "onResume"); } @Override protected void onPause() { super.onPause(); Log.d("ActivityTutorial", "onPause"); } @Override protected void onStop() { super.onStop(); Log.d("ActivityTutorial", "onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.d("ActivityTutorial", "onDestroy"); } } 

Pongo puntos de interrupción en las líneas donde estoy registrando usando Log.d (…). Entonces intenté depurar. onCreate método está bien – que está llamando cuando la actividad se crea.

Situación extraña está empezando en el método Start. Según la documentación de Android: "onStart () Se llama cuando la actividad se está haciendo visible para el usuario." Pero cuando depuro, viene al método del onStart pero el botón que está en esta actividad, no visible todavía.

introduzca la descripción de la imagen aquí

Pensé que se suponía que se veía onResume () – después de llamar al método onStart (). Pero el botón no era visible.

introduzca la descripción de la imagen aquí

Sólo después del método onResume, el botón era visible.

introduzca la descripción de la imagen aquí

Así que mi pregunta es qué está mal con los métodos onStart y onResume? Tal vez estoy haciendo algo no de la manera que se supone que debe hacerse?

No. El método onResume () hace visible la actividad. Como usted dijo gracias a la documentación: "onStart () llamado cuando la actividad se está haciendo visible para el usuario".

Y si lees atentamente: "onResume () Se llama cuando la actividad comenzará a interactuar con el usuario ."

ACTUALIZAR:

Tenga en cuenta que onResume no es el mejor indicador de que su actividad es visible para el usuario; una ventana del sistema tal como el bloqueo del teclado puede estar delante. Utilice onWindowFocusChanged (boolean) para saber con certeza que su actividad es visible para el usuario (por ejemplo, para reanudar un juego).

bien la actividad será visible en el método onResume () no en onStart (). consulte la documentación android y el ciclo de vida de la actividad.

La razón principal del método onStart () para estar en Activity Lifecycle es preparar el subproceso principal de UI para el usuario. Captura los valores asignados en los métodos onCreate () para la interfaz de usuario y la UI de actividad lista para que se vuelva visible para el usuario.

La segunda razón es que no tenemos que crear una actividad cada vez que el método onStop () llama. Es como un punto de control en el ciclo de vida de la actividad para volver a estados anteriores sin hacer carga adicional.

Ahora los métodos onStart () se cargan muy rápidamente y comienzan el método onResume (). El onResume () permite la interacción del usuario con la interfaz de usuario. Pero como usted dice que su interfaz de usuario viene poco después de la carga del método onResune () es porque la interfaz de usuario inaccesible es de ningún uso en el método onStart (). Y si un usuario intenta acceder a la interfaz de usuario inaccesible pero no puede realizar nada, muestra una mala impresión. Por lo tanto, la interfaz de usuario sólo se hará visible cuando esté accesible y esté lista para la interacción del usuario.

  • Android elementos compartidos transición pre-21
  • Android: Cómo seguir con la misma orientación que comenzó la Actividad
  • Loader no se inicia después de llamar a initLoader ()?
  • ¿Comenzar demasiadas actividades?
  • Espresso - ¿Cómo puedo comprobar si se inicia una actividad después de realizar una determinada acción?
  • AppCompatActivity en lugar de Actividad o FragmentActivity
  • ¿Por qué TabActivity está obsoleta (razón)?
  • Espresso ¿cómo probar si la actividad está terminada?
  • Notificaciones de la barra de estado de Android: abre la actividad correcta al seleccionar una notificación
  • Cambiar fragmentos - Google Map Fragmento V2 - La actividad ha sido destruida Error
  • Actividad transparente se está abriendo sobre la actividad principal. ¿Cómo abrirlo no sobre la actividad principal?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.