Чому не можна викликати onResume () після методів onRestart () та onCreate (), що виключає onStart ()? Яке його призначення?
Гаразд, оскільки моя перша відповідь була досить довгою, я не продовжуватиму її далі, тож давайте спробуємо це ...
public DriveToWorkActivity extends Activity
implements onReachedGroceryStoreListener {
}
public GroceryStoreActivity extends Activity {}
ВВАЖАЙТЕ ПРИМІТКА. Я навмисно пропускав дзвінки на такі речі, як super.onCreate(...)тощо. Це псевдо-код, тому дайте мені тут деяку художню ліцензію. ;)
Методи DriveToWorkActivityслідування ...
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();
}
Гаразд, так це ще один довгий (жаль людей). Але ось моє пояснення ...
onResume()це коли я починаю їздити, і onPause()коли я приїжджаю на тимчасову зупинку. Тож я заїжджаю, потім досягаю червоного світла, тому я призупиняюсь ... світло стає зеленим, і я продовжую. Ще одне червоне світло і я призупиняюсь, потім зелене, щоб я відновив. onPause() -> onResume() -> onPause() -> onResume()Петля щільно один і відбувається багато раз в моєму подорожі.
Цикл від зупинки назад через перезапуск (підготовка до продовження моєї подорожі) до початку знову, мабуть, менш поширений. В одному випадку я помічаю продуктовий магазин і GroceryStoreActivityзапускається (примушуючи мене DriveToWorkActivityдо точки onStop()). Коли я повертаюся з магазину, проходжу onRestart()і onStart()продовжую свою подорож.
Я міг би поставити код , який в onStart()в обидва onCreate()і onRestart()і не турбувати , щоб перевизначити onStart()на всіх , але тим більше , що повинно бути зроблено між onCreate() -> onResume()і onRestart() -> onResume(), тим більше я дублюючими речами.
Отже, ще раз переоформити ...
Чому не можна викликати onResume () після методів onRestart () та onCreate (), що виключає onStart ()?
Якщо ви не перекриєте, onStart()то це фактично відбувається. Хоча onStart()метод Activityбуде називатися неявно, ефект у вашому коді є ефективним onCreate() -> onResume()або onRestart() -> onResume().