2012-08-30 21 views
7

Tengo una aplicación donde, después de iniciar sesión, aparece en la pantalla de bienvenida. Pongo un pan tostado para ver cuando los fuegos onResume, pero también se activa después de onCreate¿Por qué se llama onResume() cuando se inicia una actividad?

protected void onResume(){ 
    super.onResume(); 
    Database openHelper = new Database(this);//create new Database to take advantage of the SQLiteOpenHelper class 
    myDB2 = openHelper.getReadableDatabase(); // or getWritableDatabase(); 
    myDB2=SQLiteDatabase.openDatabase("data/data/com.example.login2/databases/aeglea", null, SQLiteDatabase.OPEN_READONLY);//set myDB to aeglea 
     cur = fetchOption("SELECT * FROM user_login");//use above to execute SQL query 
     msg.setText("Username: "+cur.getString(cur.getColumnIndex("username")) 
        +"\nFull name: "+cur.getString(cur.getColumnIndex("name"))+" "+cur.getString(cur.getColumnIndex("last")) 
        +"\ne-mail: "+cur.getString(cur.getColumnIndex("email")) 
        +"\nAeglea id:"+cur.getString(cur.getColumnIndex("uid"))); 

     Toast.makeText(getApplicationContext(), "RESUMED", Toast.LENGTH_SHORT).show(); 
} 

Viene de:

//create new intent 
Intent log = new Intent(getApplicationContext(), Welcome.class); 
// Close all views before launching logged 
    log.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(log); 
    // Close Login Screen 
    finish(); 

Estoy desconcertado. Por favor, ofrece algo de experiencia aquí

+1

'onPause' o' onResume'? – zapl

+0

@zapl Lo siento, voy a editar mi pregunta – MayTheSchwartzBeWithYou

Respuesta

19

Bueno, no entiendo muy bien lo que estás tratando de preguntar o cuál es la pregunta aquí. PERO te recomendaré que leas el "Android Activity LifeCycle" y eso borrará muchas de tus dudas porque en android no es lo mismo que en otros lenguajes o plataformas.

enter image description here

Nota: El onResume es llamar cada vez que la actividad es "visible", por lo que todas las veces que su actividad se hace visible, el mismo número de veces que el método será llamado. Si solo quieres llamar al método la primera vez, entonces OnCreate es lo que estás buscando.

+0

Gracias a la nota que me ha quedado más claro – MayTheSchwartzBeWithYou

+1

bienvenido peter, espero que esto pueda ayudarlo en el futuro. –

6

Eche un vistazo a la tabla de estado del ciclo de vida de la actividad.

Este es el orden están siendo llamados los métodos:

  1. onCreate()
  2. onStart()
  3. onResume()
  4. -> actividad se está ejecutando

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

+0

Sí, asumí tanto, pero pensé que onResume() se activó cuando se activó onPause. – MayTheSchwartzBeWithYou

+1

Está totalmente bien. Algunas cosas son diferentes en Android, pero cuando las conoces te encantará. Al principio, quedé impresionado cuando supe que onActivityResult (..) se llama beforeResume (..), en caso de que lo use pronto. – Ivo

2

onResume después onCreate es lo normal Activity Lifecycle

La razón se obtiene onStart y onResume llamada incluso en la primera puesta en marcha es que hace más fácil la escritura de código.

Se puede suponer que antes de regresar a onResume obtendrá llamado ya que no hay manera de salir de la "reanudó" estado sin . Ese comportamiento se puede utilizar para inicializar cosas en onResume y para des-inicializarlas sin comprobar más en . Si no puede estar seguro de que se llamó al onResume al principio, todo el esquema se rompe.

En una nota al margen: No acceda a su base de datos desde ninguno de los métodos onXYZ ya que eso bloqueará el hilo de UI que debería dibujar la interfaz de usuario y manejar eventos táctiles.

Cuestiones relacionadas