เหตุใดจึงไม่สามารถเรียกใช้ 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()