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?

5 Solutions collect form web for “Ejecutar un método después de que una actividad sea visible para el usuario”

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(); } 
  • Android - startActivityForResult que activa inmediatamente onActivityResult
  • Cómo evitar llamadas a onDestroy () seguido de onCreate () cuando se pulsa el botón de encendido en Android
  • La actividad principal no es la basura recogida después de la destrucción porque es referenciada por InputMethodManager indirectamente
  • Cómo hacer que un método View invisible / Gone onBackPressed () en android
  • Android: addview () - agregar una nueva vista en la parte superior de la actividad
  • Ejecutar código en el estado onPause () o onStop () de la actividad
  • Lista de todas las actividades de la aplicación
  • Enviar ArrayList <Object> de BroadCastReceiver a Actividad
  • Android: ¿cómo puedo comprobar si la actividad se está ejecutando?
  • GetActivity () en el fragmento es nulo después del cambio de orientación
  • Cómo borrar todas las actividades anteriores ~?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.