Tại sao không thể gọi onResume () sau khi các phương thức onRestart () và onCreate () chỉ loại trừ onStart ()? Mục đích của nó là gì?
OK, vì câu trả lời đầu tiên của tôi khá dài nên tôi sẽ không mở rộng thêm nữa nên hãy thử điều này ...
public DriveToWorkActivity extends Activity
implements onReachedGroceryStoreListener {
}
public GroceryStoreActivity extends Activity {}
XIN LƯU Ý: Tôi đã cố tình bỏ qua các cuộc gọi đến những thứ như super.onCreate(...)
v.v ... Đây là mã giả vì vậy hãy cho tôi một số giấy phép nghệ thuật ở đây. ;)
Các phương pháp để làm DriveToWorkActivity
theo ...
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, vậy nó là một cái dài khác (xin lỗi mọi người). Nhưng đây là lời giải thích của tôi ...
onResume()
là khi tôi bắt đầu lái xe và onPause()
là khi tôi dừng lại tạm thời. Vì vậy, tôi lái xe sau đó đạt đèn đỏ nên tôi dừng lại ... đèn sáng và tôi tiếp tục. Một đèn đỏ khác và tôi dừng lại, sau đó màu xanh lá cây để tôi tiếp tục. Các onPause() -> onResume() -> onPause() -> onResume()
vòng lặp là một chặt chẽ và xảy ra nhiều lần thông qua cuộc hành trình của tôi.
Vòng lặp từ bị dừng trở lại thông qua khởi động lại (chuẩn bị thực hiện hành trình của tôi) để bắt đầu lại có lẽ ít phổ biến hơn. Trong một trường hợp, tôi phát hiện ra Cửa hàng tạp hóa và GroceryStoreActivity
nó được bắt đầu (buộc tôi DriveToWorkActivity
đến điểm onStop()
). Khi tôi trở về từ cửa hàng, tôi đi qua onRestart()
và onStart()
sau đó tiếp tục hành trình của mình.
Tôi có thể đặt mã đó onStart()
vào cả hai onCreate()
và onRestart()
không bận tâm đến việc ghi đè lên onStart()
tất cả, nhưng càng cần phải thực hiện giữa onCreate() -> onResume()
và onRestart() -> onResume()
, tôi càng nhân đôi nhiều thứ.
Vì vậy, để yêu cầu một lần nữa ...
Tại sao không thể gọi onResume () sau khi các phương thức onRestart () và onCreate () chỉ loại trừ onStart ()?
Nếu bạn không ghi đè onStart()
thì đây thực sự là những gì xảy ra. Mặc dù onStart()
phương thức Activity
sẽ được gọi ngầm, nhưng hiệu quả trong mã của bạn là hiệu quả onCreate() -> onResume()
hoặc onRestart() -> onResume()
.