我无法理解onStart()过渡状态的含义。该onResume()方法总是在 之后调用onStart()。为什么不能onResume()是之后调用的方法onRestart()和onCreate()方法只是排除onStart()?它的目的是什么?
onStart()
onResume()
onRestart()
onCreate()
为什么我们不能没有onStart(). 我仍然认为它是多余的(可能是因为不完全理解它的含义)。
为什么不能在 onRestart() 和 onCreate() 方法之后调用 onResume(),只排除 onStart()?它的目的是什么?
好的,因为我的第一个答案很长,我不会进一步扩展它,所以让我们试试这个......
public DriveToWorkActivity extends Activity implements onReachedGroceryStoreListener { } public GroceryStoreActivity extends Activity {}
请注意: 我故意省略了对诸如此类的调用super.onCreate(...)。这是伪代码,所以在这里给我一些艺术许可。;)
super.onCreate(...)
DriveToWorkActivity遵循的方法…
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()循环是一个紧密的循环,在我的旅程中发生了很多次。
onPause()
onPause() -> onResume() -> onPause() -> onResume()
从重新开始(准备继续我的旅程)到重新开始的循环可能不太常见。在一种情况下,我发现了杂货店并GroceryStoreActivity开始了(强迫我DriveToWorkActivity到 点onStop())。当我从商店回来时,我经过onRestart()然后onStart()继续我的旅程。
GroceryStoreActivity
onStop()
我可以将两者中的代码onStart()放入两者中onCreate(),onRestart()并且根本不需要覆盖,但是在andonStart()之间需要做的越多,我复制的东西就越多。onCreate() -> onResume()``onRestart() -> onResume()
onCreate() -> onResume()``onRestart() -> onResume()
所以,再次引用…
为什么不能在 onRestart() 和 onCreate() 方法之后调用 onResume(),只排除 onStart()?
如果您不覆盖onStart(),那么这实际上就是发生的事情。虽然 的onStart()方法Activity将被隐式调用,但您的代码中的效果实际上是onCreate() -> onResume()or onRestart() -> onResume()。
Activity
onCreate() -> onResume()
onRestart() -> onResume()