2012-03-04 19 views
18

Cuando se crea una actividad por primera vez, el sistema llama al método OnContentChanged() como el primer método y la última llamada por sistema es el método OnDetachedFromWindow() cuando se mata una actividad, pero los documentos android dice toda la vida de una actividad que ocurre entre OnCreate() y OnDestroy(). ¿Por qué? Por favor, ayúdame a entender la diferencia entre estos métodos.Métodos de actividad: onCreate() y onDestroy()

Código:

import android.app.Activity; 
import android.content.res.Configuration; 
import android.os.Bundle; 
import android.widget.Toast; 

public class ActivitylifecycleActivity extends Activity { 
    /** Called when the activity is first created. */ 

    @Override 
    public void onContentChanged() { 
     super.onContentChanged(); 
     Toast.makeText(getApplicationContext(),"1. onContentChanged()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Toast.makeText(getApplicationContext(),"2. onCreate()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     Toast.makeText(getApplicationContext(),"3. onStart()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onRestoreInstanceState(Bundle restoreInstanceState) { 
     Toast.makeText(getApplicationContext(),"4. onRestoreinstaneState()", Toast.LENGTH_SHORT).show(); 
     super.onRestoreInstanceState(restoreInstanceState); 
    } 

    @Override 
    public void onRestart() { 
     super.onRestart(); 
     Toast.makeText(getApplicationContext(),"5. onRestart()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    protected void onPostCreate(Bundle onpostcrete) { 
     super.onPostCreate(onpostcrete); 
     Toast.makeText(getApplicationContext(),"6. onPostCreate()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     Toast.makeText(getApplicationContext(),"7. onResume()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    protected void onPostResume() { 
     super.onPostResume(); 
     Toast.makeText(getApplicationContext(),"8. onPostResume()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onAttachedToWindow() { 
     super.onAttachedToWindow(); 
     Toast.makeText(getApplicationContext(),"9. onAttachedToWindow()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onWindowFocusChanged(boolean bo) { 
     super.onWindowFocusChanged(true); 
     Toast.makeText(getApplicationContext(),"10. onWindowFocusChanged()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onUserLeaveHint() { 
     super.onUserLeaveHint(); 
     Toast.makeText(getApplicationContext(),"11. onUserLeaveHint()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onUserInteraction() { 
     super.onUserInteraction(); 
     ii=0; 
     Toast.makeText(getApplicationContext(),"12. onUserInteraction()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onSaveInstanceState(Bundle savedInstanceState) { 
     super.onSaveInstanceState(savedInstanceState); 
     Toast.makeText(getApplicationContext(),"13. onSaveInstanceState()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     Toast.makeText(getApplicationContext(),"14. onPause()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
     Toast.makeText(getApplicationContext(),"15. onStop()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     Toast.makeText(getApplicationContext(),"16. onDestroy()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onDetachedFromWindow() { 
     super.onDetachedFromWindow(); 
     Toast.makeText(getApplicationContext(),"17. onDetachedFromWindow()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     Toast.makeText(getApplicationContext(),"18. onConfigurationChanged()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public boolean onSearchRequested() { 
     super.onSearchRequested(); 
     Toast.makeText(getApplicationContext(),"19. onSearchRequested()", Toast.LENGTH_SHORT).show(); 
     return false; 
    } 
} 

En este código, onContentChanged() se llama antes de onCreate() método y onDetachedFromWindow() se llama después de onDestroy(). ¿Por qué?

Respuesta

20

onCreate():

Cuando una actividad comienza su vida onCreate() se llama. Se llama solo una vez en el ciclo de vida de una actividad.

OnDestroy():

onDestroy() se llama cuando una actividad finaliza su ciclo de vida. También se llama una vez en el ciclo de vida de una actividad.

onContentChanged():

Este gancho es llamada cuando la vista de contenido de la pantalla cambia (debido a una llamada a Window.setContentView o Window.addContentView). Por ejemplo, agrega una nueva vista a la actividad o desea actualizar la lista llamando al notifyDataSetChanged().

onDetachedFromWindow():

llama cuando la ventana principal asociado con la actividad se ha desprendido de la gestor de ventanas. Por ejemplo, se invoca cuando la actividad actual entra en segundo plano o cuando aparece otra actividad delante de la actividad actual.

+0

pero 'onContentChanged()' y 'onDetachedFromWindow()' ambos métodos llamados una vez en el ciclo de vida en una actividad. cuando se crea una actividad nueva llamada al sistema método 'onContentChanged()' 'antes de onCreate()' y cuando una actividad que va a destruir el sistema de llamada 'onDetachedFromWindow()' en último método. –

+0

onContentChanged() se invoca cuando cambia el contenido de la ventana. Como el contenido de la ventana cambia en la actividad de inicio, se llama. Pero si se cambia el contenido de la ventana durante la ejecución de la actividad en ContentChanged se invocará una y otra vez cada vez que cambie el contenido. Igual es el caso para la ventana onDetachedFrom, se llama cuando la vista de actividad no es más visible, por ejemplo, cuando se destruye la ventana o cuando aparece otra actividad en primer plano. Este método se puede llamar más de una vez. –

+0

este código 'onContentChanged()' llamado perior a 'onCreate()' –

Cuestiones relacionadas