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?
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
}
La bonne réponse consiste à utiliser la méthode onRestart()
de Activity
. C'est probablement ce que vous cherchiez.
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.
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.