Pourquoi la méthode onResume() n'est-elle pas invoquée après les méthodes onRestart() et onCreate(), à l'exclusion de onStart() ? Quel est son but ?
OK, comme ma première réponse était assez longue, je ne vais pas m'étendre davantage, alors essayons ceci...
public DriveToWorkActivity extends Activity
implements onReachedGroceryStoreListener {
}
public GroceryStoreActivity extends Activity {}
VEUILLEZ NOTER : J'ai délibérément laissé de côté les appels à des choses comme super.onCreate(...)
etc. Il s'agit d'un pseudo-code, alors laissez-moi une certaine liberté artistique ;)
Les méthodes de DriveToWorkActivity
suivre...
protected void onCreate(...) {
openGarageDoor();
unlockCarAndGetIn();
closeCarDoorAndPutOnSeatBelt();
putKeyInIgnition();
}
protected void onStart() {
startEngine();
changeRadioStation();
switchOnLightsIfNeeded();
switchOnWipersIfNeeded();
}
protected void onResume() {
applyFootbrake();
releaseHandbrake();
putCarInGear();
drive();
}
protected void onPause() {
putCarInNeutral();
applyHandbrake();
}
protected void onStop() {
switchEveryThingOff();
turnOffEngine();
removeSeatBeltAndGetOutOfCar();
lockCar();
}
protected void onDestroy() {
enterOfficeBuilding();
}
protected void onReachedGroceryStore(...) {
Intent i = new Intent(ACTION_GET_GROCERIES, ..., this, GroceryStoreActivity.class);
}
protected void onRestart() {
unlockCarAndGetIn();
closeDoorAndPutOnSeatBelt();
putKeyInIgnition();
}
OK, c'est encore une longue histoire (désolé les amis). Mais voici mon explication...
onResume()
c'est quand je commence à conduire et onPause()
c'est quand je m'arrête temporairement. Je conduis, puis j'arrive à un feu rouge et je fais une pause... le feu passe au vert et je reprends. Un autre feu rouge et je fais une pause, puis le feu passe au vert et je reprends. Le site onPause() -> onResume() -> onPause() -> onResume()
La boucle est serrée et se produit de nombreuses fois au cours de mon voyage.
La boucle entre un arrêt et un redémarrage (pour me préparer à poursuivre mon voyage) et un nouveau départ est peut-être moins courante. Dans un cas, j'ai repéré l'épicerie et l'hôtel de ville. GroceryStoreActivity
est lancé (ce qui force mon DriveToWorkActivity
au point de onStop()
). Quand je reviens du magasin, je passe par onRestart()
et onStart()
puis reprendre mon voyage.
Je pourrais mettre le code qui est dans onStart()
dans les deux onCreate()
et onRestart()
et ne pas prendre la peine de remplacer onStart()
du tout, mais le plus qui doit être fait entre onCreate() -> onResume()
et onRestart() -> onResume()
plus je duplique les choses.
Donc, pour reformuler une fois de plus...
Pourquoi la méthode onResume() n'est-elle pas invoquée après les méthodes onRestart() et onCreate(), à l'exclusion de onStart() ?
Si vous ne remplacez pas onStart()
alors c'est effectivement ce qui se passe. Bien que le onStart()
méthode de Activity
sera appelé implicitement, l'effet dans votre code est effectivement onCreate() -> onResume()
ou onRestart() -> onResume()
.
0 votes
Regardez ici pour le cycle de vie de l'application : d.Android.com/guide/topics/fundamentals.html
0 votes
Ce truc est facile. Essayez d'expliquer cela AVEC des fragments, maintenant c'est Programmation Android pour vous !
0 votes
Les réponses ci-dessous n'ont pas le code réel avec l'explication. Ce site est un code qui l'explique avec un fragment.