Android Activité Android Explication de LifeCycle


Exemple

Supposons une application avec une MainActivity qui puisse appeler l'activité suivante en cliquant sur un bouton.

public class MainActivity extends AppCompatActivity {

    private final String LOG_TAG = MainActivity.class.getSimpleName();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(LOG_TAG, "calling onCreate from MainActivity");
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.d(LOG_TAG, "calling onStart from MainActivity");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.d(LOG_TAG, "calling onResume  from MainActivity");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(LOG_TAG, "calling onPause  from MainActivity");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(LOG_TAG, "calling onStop  from MainActivity");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(LOG_TAG, "calling onDestroy  from MainActivity");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d(LOG_TAG, "calling onRestart  from MainActivity");
    }
    public void toNextActivity(){
        Log.d(LOG_TAG, "calling Next Activity");
        Intent intent = new Intent(this, NextActivity.class);
        startActivity(intent);
    } }

et

public class NextActivity extends AppCompatActivity {
    private final String LOG_TAG = NextActivity.class.getSimpleName();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_next);
        Log.d(LOG_TAG, "calling onCreate from Next Activity");
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.d(LOG_TAG, "calling onStart from Next Activity");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.d(LOG_TAG, "calling onResume  from Next Activity");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(LOG_TAG, "calling onPause  from Next Activity");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(LOG_TAG, "calling onStop  from Next Activity");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(LOG_TAG, "calling onDestroy  from Next Activity");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d(LOG_TAG, "calling onRestart  from Next Activity");
    } }

Lorsque l'application est créée pour la première fois
D / MainActivity: appel de onCreate à partir de MainActivity
D / MainActivity: appel de onStart depuis MainActivity
D / MainActivity: appel à onResume à partir de MainActivity
sont appelés

Quand l'écran dort
08: 11: 03.142 D / MainActivity: appel de onPause à partir de MainActivity
08: 11: 03.192 D / MainActivity: appel de onStop depuis MainActivity
sont appelés. Et encore quand il se réveille
08: 11: 55.922 D / MainActivity: appel de onRestart à partir de MainActivity
08: 11: 55.962 D / MainActivity: appel de onStart depuis MainActivity
08: 11: 55.962 D / MainActivity: appel de onResume à partir de MainActivity
sont appelés

Cas 1: quand l'activité suivante est appelée à partir de l'activité principale
D / MainActivity: appel à l'activité suivante
D / MainActivity: appel de onPause à partir de MainActivity
D / NextActivity: appeler onCreate à partir de l'activité suivante
D / NextActivity: appel de onStart à partir de l'activité suivante
D / NextActivity: appeler onResume à partir de l'activité suivante
D / MainActivity: appel de onStop depuis MainActivity

Lorsque vous revenez à l'activité principale à partir de l'activité suivante à l'aide du bouton retour
D / NextActivity: appeler onPause à partir de l'activité suivante
D / MainActivity: appeler onRestart à partir de MainActivity
D / MainActivity: appel de onStart depuis MainActivity
D / MainActivity: appel à onResume à partir de MainActivity
D / NextActivity: appeler onStop à partir de l'activité suivante
D / NextActivity: appeler onDestroy à partir de l'activité suivante

Cas 2: Lorsque l'activité est partiellement masquée (lorsque le bouton Vue d'ensemble est enfoncé) ou lorsque l'application passe en arrière-plan et qu'une autre application la masque complètement
D / MainActivity: appel de onPause à partir de MainActivity
D / MainActivity: appel de onStop depuis MainActivity
et lorsque l'application est de retour au premier plan prête à accepter les entrées utilisateur,
D / MainActivity: appeler onRestart à partir de MainActivity
D / MainActivity: appel de onStart depuis MainActivity
D / MainActivity: appel à onResume à partir de MainActivity
sont appelés

Cas 3: Lorsqu'une activité est appelée pour remplir une intention implicite et que l'utilisateur a effectué une sélection. Par exemple, lorsque vous appuyez sur le bouton Partager et que l'utilisateur doit sélectionner une application dans la liste des applications affichées
D / MainActivity: appel de onPause à partir de MainActivity

L'activité est visible mais pas active maintenant. Lorsque la sélection est terminée et que l'application est active
D / MainActivity: appel à onResume à partir de MainActivity
est appelé

Cas4:
Lorsque l'application est tuée en arrière-plan (pour libérer des ressources pour une autre application au premier plan), onPause (pour le périphérique pré-en nid d'abeilles) ou onStop (pour le périphérique en nid d'abeille) sera le dernier à être appelé avant la fin de l'application.

onCreate et onDestroy seront appelés au maximum une fois à chaque exécution de l'application. Mais onPause, onStop, onRestart, onStart, onResume peuvent être appelés plusieurs fois au cours du cycle de vie.