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.
- ¿Cómo ampliar la actividad completa en multi táctil?
- Implementación diferente para un botón de acción flotante en cada fragmento de una actividad
- Cómo configurar la orientación ContentPage en Xamarin.Forms
- ¿La mejor manera de agregar actividad a un proyecto de Android en Eclipse?
- La actividad de Android se reinicia después de desbloquear el dispositivo
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.
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.
Sólo después del método onResume, el botón era visible.
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?
- Transmisión de datos de un fragmento de actividad a otro fragmento de actividad
- Iniciar actividad con el botón Android
- ¿Cómo funcionan los ciclos de vida de la actividad de Android en relación con la aplicación completa?
- La instancia de actividad sigue existiendo incluso después de que onDestroy () se llame
- Actividad de anulación del proyecto de la Biblioteca de Android
- Finalizar actividad en BackStack - Android
- Actividad iniciada con startActivityForResult () que no regresa a la actividad de llamada
- Serialización de Android / Transferencia de objetos y devolución
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.