Perché non può essere l'onResume () viene invocato dopo i metodi onRestart () e onCreate () escludendo solo onStart ()? Qual è il suo scopo?
OK, poiché la mia prima risposta è stata piuttosto lunga, non la estenderò ulteriormente, quindi proviamo questo ...
public DriveToWorkActivity extends Activity
implements onReachedGroceryStoreListener {
}
public GroceryStoreActivity extends Activity {}
NOTA BENE: ho deliberatamente lasciato fuori le chiamate a cose come super.onCreate(...)ecc. Questo è pseudo-codice quindi dammi una licenza artistica qui. ;)
I metodi per DriveToWorkActivityseguire ...
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, quindi è un altro lungo (scusate gente). Ma ecco la mia spiegazione ...
onResume()è quando comincio a guidare ed onPause()è quando mi fermo temporaneamente. Quindi guido e poi raggiungo una luce rossa, quindi mi fermo ... la luce diventa verde e riprendo. Un'altra luce rossa e mi fermo, poi verde quindi riprendo. Il onPause() -> onResume() -> onPause() -> onResume()ciclo è stretto e si verifica molte volte durante il mio viaggio.
Il ciclo dall'essere fermato indietro attraverso un riavvio (preparandosi a continuare il mio viaggio) per ricominciare è forse meno comune. In un caso, individuo il negozio di alimentari e GroceryStoreActivityviene avviato (forzando il mio DriveToWorkActivityal punto di onStop()). Quando torno dal negozio, passo attraverso onRestart()e onStart()poi riprendo il mio viaggio.
Potrei mettere il codice che è onStart()in entrambi onCreate()e onRestart()e non preoccuparmi di ignorare onStart()affatto, ma più ciò che deve essere fatto tra onCreate() -> onResume()e onRestart() -> onResume(), più sto duplicando le cose.
Quindi, per requote ancora una volta ...
Perché non può essere l'onResume () viene invocato dopo i metodi onRestart () e onCreate () escludendo solo onStart ()?
Se non si esegue l'override, onStart()questo è effettivamente ciò che accade. Sebbene il onStart()metodo di Activityverrà chiamato implicitamente, l'effetto nel tuo codice è efficace onCreate() -> onResume()o onRestart() -> onResume().