¿Por qué no puede ser que se invoque onResume () después de que los métodos onRestart () y onCreate () solo excluyan onStart ()? ¿Cual es su propósito?
OK, como mi primera respuesta fue bastante larga, no la extenderé más, así que intentemos esto ...
public DriveToWorkActivity extends Activity
implements onReachedGroceryStoreListener {
}
public GroceryStoreActivity extends Activity {}
TENGA EN CUENTA: he omitido deliberadamente las llamadas a cosas como super.onCreate(...)etc. Esto es un seudocódigo, así que deme una licencia artística aquí. ;)
Los métodos a DriveToWorkActivityseguir ...
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, entonces es otra larga (lo siento amigos). Pero aquí está mi explicación ...
onResume()es cuando empiezo a conducir y onPause()es cuando llego a una parada temporal. Entonces conduzco y luego alcanzo una luz roja, así que me detengo ... la luz se pone verde y reanudo. Otra luz roja y me detengo, luego verde, así que reanudo. El onPause() -> onResume() -> onPause() -> onResume()ciclo es apretado y ocurre muchas veces durante mi viaje.
El bucle desde que se detiene de nuevo a través de un reinicio (preparación para continuar mi viaje) para comenzar de nuevo es quizás menos común. En un caso, veo la tienda de comestibles y GroceryStoreActivityse inicia (forzándome DriveToWorkActivityal punto de onStop()). Cuando regreso de la tienda, paso onRestart()y onStart()luego reanudo mi viaje.
Podría poner el código que está en onStart()ambos onCreate()y onRestart()no molestarme en anularlo, onStart()pero cuanto más se deba hacer entre onCreate() -> onResume()y onRestart() -> onResume(), más duplicaré las cosas.
Entonces, para volver a cotizar una vez más ...
¿Por qué no puede ser que se invoque onResume () después de que los métodos onRestart () y onCreate () solo excluyan onStart ()?
Si no anula, onStart()entonces esto es efectivamente lo que sucede. Aunque el onStart()método de Activityse llamará implícitamente, el efecto en su código es efectivamente onCreate() -> onResume()o onRestart() -> onResume().