왜 onStart ()를 제외하고 onRestart () 및 onCreate () 메소드 후에 onResume ()이 호출 될 수 없습니까? 그 목적은 무엇입니까?
첫 번째 대답이 꽤 길었으므로 더 이상 확장하지 않으므로 시도해 보겠습니다.
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()일시적으로 멈출 때입니다. 그래서 나는 운전을하다가 빨간불에 도달하여 잠깐 멈춘다. 또 다른 빨간불과 나는 잠시 멈췄다가 다시 녹색을 resume 다 onPause() -> onResume() -> onPause() -> onResume()루프는 꽉 하나이며 나의 여행을 통해 여러 번 발생합니다.
재시작을 통해 다시 멈추는 것 (내 여행을 준비하기 위해)에서 다시 시작하는 루프는 덜 일반적입니다. 어떤 경우에는, 나는 식료품 점을 발견하고 GroceryStoreActivity가 시작됩니다 (내 DriveToWorkActivity지점으로 강제 onStop()). 내가 가게에서 돌아 오면, 나는 통과 onRestart()하고 onStart()다음 내 여행을 다시 시작합니다.
나는에있어 코드를 넣을 수있는 onStart()양에 onCreate()와 onRestart()및 대체 할 귀찮게하지 onStart()요구 사이에 수행 할 수있는보다 전혀하지만 onCreate() -> onResume()하고 onRestart() -> onResume(), 더 내가 복제있어 일을.
다시 한 번 인용하면 ...
왜 onStart ()를 제외하고 onRestart () 및 onCreate () 메소드 후에 onResume ()이 호출 될 수 없습니까?
재정의하지 않으면 onStart()이것이 실제로 발생합니다. 의 onStart()메소드는 Activity암시 적으로 호출 되지만 코드의 효과는 실제로 onCreate() -> onResume()또는 onRestart() -> onResume()입니다.