Warum kann es nicht sein, dass onResume () nach den Methoden onRestart () und onCreate () aufgerufen wird, nur ohne onStart ()? Was ist seine Aufgabe?
OK, da meine erste Antwort ziemlich lang war, werde ich sie nicht weiter ausdehnen, also lass es uns versuchen ...
public DriveToWorkActivity extends Activity
implements onReachedGroceryStoreListener {
}
public GroceryStoreActivity extends Activity {}
BITTE BEACHTEN SIE: Ich habe die Anrufe zu Dingen wie super.onCreate(...)
usw. absichtlich weggelassen . Dies ist Pseudocode, also geben Sie mir hier eine künstlerische Lizenz. ;)
Die Methoden für DriveToWorkActivity
folgen ...
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, es ist also noch eine lange (sorry Leute). Aber hier ist meine Erklärung ...
onResume()
ist, wenn ich anfange zu fahren und onPause()
wenn ich vorübergehend zum Stillstand komme. Also fahre ich und erreiche ein rotes Licht, damit ich innehalte ... das Licht wird grün und ich fahre fort. Noch ein rotes Licht und ich mache eine Pause, dann grün, damit ich weitermache. Die onPause() -> onResume() -> onPause() -> onResume()
Schleife ist eng und kommt während meiner Reise oft vor.
Die Schleife vom Zurückhalten durch einen Neustart (Vorbereitung auf die Fortsetzung meiner Reise) bis zum erneuten Starten ist vielleicht weniger häufig. In einem Fall sehe ich das Lebensmittelgeschäft und das GroceryStoreActivity
wird gestartet (was mich DriveToWorkActivity
zum Punkt zwingt onStop()
). Wenn ich aus dem Laden zurückkomme, gehe ich durch onRestart()
undonStart()
setze dann meine Reise fort.
Ich könnte den Code, der onStart()
in beiden enthalten ist, einfügen onCreate()
und mich überhaupt onRestart()
nicht darum kümmern, ihn zu überschreiben, onStart()
aber je mehr zwischen onCreate() -> onResume()
und getan werden muss onRestart() -> onResume()
, desto mehr dupliziere ich Dinge.
Also, um noch einmal zu fordern ...
Warum kann es nicht sein, dass onResume () nach den Methoden onRestart () und onCreate () aufgerufen wird, nur ohne onStart ()?
Wenn Sie nicht überschreiben, onStart()
geschieht dies effektiv. Obwohl die onStart()
Methode von Activity
implizit aufgerufen wird, ist der Effekt in Ihrem Code effektiv onCreate() -> onResume()
oder onRestart() -> onResume()
.