Ejecutar un método después de que una actividad sea visible para el usuario

Tengo una actividad contiene demasiados controles de interfaz de usuario. Quiero ejecutar un método después de hacer la actividad visible.

Un ejemplo lo intenté:

public class Main extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyMethod(); } private void MyMethod(){ Toast.makeText(this, "Hi UI is fully loaded", Toast.LENGTH_SHORT).show(); } } 

Pero en el ejemplo anterior, el mensaje muestra antes de que la actividad sea visible.

¿Hay alguna manera de averiguarlo, si la actividad es totalmente visible?

Mueva su código a onResume

 @Override protected void onResume() { super.onResume(); MyMethod(); } 

Compruebe el ciclo de vida de la actividad

http://developer.android.com/reference/android/app/Activity.html

 protected void onResume () 

Llamado después onRestoreInstanceState (Bundle), onRestart () o onPause (), para que su actividad comience a interactuar con el usuario. Este es un buen lugar para comenzar las animaciones, abrir dispositivos de acceso exclusivo (como la cámara), etc.

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).

Las clases derivadas deben llamar a través de la implementación de este método. Si no lo hacen, se lanzará una excepción.

Mueva el código a onResume .

El sistema llama a este método cada vez que su actividad entra en primer plano, incluso cuando se crea por primera vez. Leer más detalles Pausing and Resuming an Activity

 @Override protected void onResume() { super.onResume(); MyMethod(); } 

Más información en el ciclo de vida de la actividad de Android: ¿para qué sirven todos estos métodos?

Llame a MyMethod() en onResume() de Actividad

Según la documentación onResume() llama cuando la actividad comenzará a interactuar con el usuario. En este punto, su actividad se encuentra en la parte superior de la pila de actividades, con la entrada del usuario en ella.

 protected void onResume() { super.onResume(); MyMethod(); } 

No hay devolución de llamada real, que se llama, exactamente en ese momento la actividad es visible. Pero como se puede ver en la imagen adjunta, el método onResume() sólo se llama cuando la actividad debe ser visible.

También echa un vistazo al ciclo de vida de la actividad ya la documentación AQUÍ

Así que su método debe ser llamado así:

 @Override public void onResume() { super.onResume(); MyMethod(); } 

Imagen

 // try this @Override public void onAttachedToWindow() { super.onAttachedToWindow(); Toast.makeText(this, "Hi UI is fully loaded", Toast.LENGTH_SHORT).show(); } 
  • ¿Por qué aparece la vista vacía en el archivo de disposición en la pantalla aunque listview tiene elementos?
  • Actualizar actividad si se cambia la preferencia
  • Appcompat-v7: vista personalizada no alineada correctamente en ActionBar
  • Al cambiar la orientación de la pantalla, se crea una nueva actividad
  • Activity.setResult (int) y el ciclo de vida de la actividad
  • Omitir correctamente la actividad de inicio de sesión si ya ha iniciado sesión
  • Cómo hacer que un método View invisible / Gone onBackPressed () en android
  • ¿Cómo pasar datos complejos entre Servicio y Actividad?
  • Uso de Android ActionBar para navegar entre las actividades
  • En Android, ¿cómo cambiar las actividades de forma programática?
  • Cómo solucionar el doble toque en Button Problema en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.