Почему это не может быть 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().