web-dev-qa-db-fra.com

Android onCreate onResume

J'ai un problème. Quand je démarre pour la première fois mon Android, dans l'activité principale, le onCreate et le onResume sont appelés. Mais je veux être appelé uniquement le onCreate.

Que puis-je faire?

15
Alessio

Selon les documents du SDK, ce que vous voyez est le comportement souhaité. Jetez un œil à l'organigramme dans les documents pour Activity - Activity Lifecycle .

Par programme, vous pouvez surmonter cela en gardant un membre d'instance pour suivre si onResume a été appelé auparavant - la première fois qu'il est appelé, définissez la variable et retournez par ex.

private boolean resumeHasRun = false;

@Override
protected void onResume() {
    super.onResume();
    if (!resumeHasRun) {
        resumeHasRun = true;
        return;
    }
    // Normal case behavior follows
}
42
Mark Roberts

La bonne réponse consiste à utiliser la méthode onRestart() de Activity. C'est probablement ce que vous cherchiez.

12
Fenix Voltres

Vous ne pouvez rien faire, car c'est ainsi que fonctionne le cycle de vie des activités.

Voir http://developer.Android.com/guide/topics/fundamentals/activities.html#Lifecycle pour un diagramme qui montre le cycle de vie.

1
Heiko Rupp

Comme vous pouvez le voir dans l'API, le cycle de vie des activités appelle toujours onResume avant d'afficher l'activité. http://developer.Android.com/reference/Android/app/Activity.html#ActivityLifecycle

Je suppose que vous pouvez créer un booléen global pour un premier accès et le définir sur false. Remplacez ensuite onResume et vérifiez la variable. Si faux, définissez-le sur true et retournez, si true, appelez super.onResume.

Devrait fonctionner, mais je ne sais pas si cela peut être géré plus simplement et je n'ai pas accès au sdk ici pour le tester.

1
MatF