Mengapa tidak bisa onResume () dipanggil setelah metode onRestart () dan onCreate () tidak termasuk onStart ()? Apa tujuannya?
OK, karena jawaban pertama saya cukup panjang, saya tidak akan memperpanjang lebih jauh jadi mari kita coba ini ...
public DriveToWorkActivity extends Activity
implements onReachedGroceryStoreListener {
}
public GroceryStoreActivity extends Activity {}
TOLONG DICATAT: Saya sengaja mengabaikan panggilan untuk hal-hal seperti super.onCreate(...)dll. Ini adalah kode semu jadi beri saya beberapa lisensi artistik di sini. ;)
Metode untuk DriveToWorkActivitymengikuti ...
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, jadi satu lagi (maaf orang). Tapi inilah penjelasan saya ...
onResume()adalah saat saya mulai mengemudi dan onPause()saat saya berhenti sementara. Jadi saya mengemudi kemudian mencapai lampu merah jadi saya berhenti ... lampu menjadi hijau dan saya melanjutkan. Lampu merah lain dan saya berhenti, lalu hijau jadi saya melanjutkan. The onPause() -> onResume() -> onPause() -> onResume()Loop adalah satu ketat dan terjadi berkali-kali melalui perjalanan saya.
Putaran dari dihentikan kembali melalui restart (bersiap untuk melanjutkan perjalanan saya) untuk memulai lagi mungkin kurang umum. Dalam satu kasus, saya melihat Toko Kelontong dan GroceryStoreActivitymulai (memaksa saya DriveToWorkActivityke titik onStop()). Ketika saya kembali dari toko, saya pergi onRestart()dan onStart()melanjutkan perjalanan.
Saya bisa memasukkan kode yang ada di onStart()keduanya onCreate()dan onRestart()dan tidak repot-repot menimpa onStart()sama sekali tetapi semakin banyak yang perlu dilakukan antara onCreate() -> onResume()dan onRestart() -> onResume(), semakin saya menduplikasi hal-hal.
Jadi, untuk mengutip kembali sekali lagi ...
Mengapa tidak bisa onResume () dipanggil setelah metode onRestart () dan onCreate () tidak termasuk onStart ()?
Jika Anda tidak menimpa onStart()maka inilah yang terjadi secara efektif. Meskipun onStart()metode Activityakan dipanggil secara implisit, efek dalam kode Anda efektif onCreate() -> onResume()atau onRestart() -> onResume().