我无法理解onStart()过渡状态的含义。该onResume()方法总是在after之后调用onStart()。为什么不能将onResume()after之后的方法onRestart()和onCreate()方法仅仅排除在外onStart()?目的是什么?
为什么我们不能没有生活onStart()。我仍然认为它是多余的(可能是因为无法完全理解其含义)。
我无法理解onStart()过渡状态的含义。该onResume()方法总是在after之后调用onStart()。为什么不能将onResume()after之后的方法onRestart()和onCreate()方法仅仅排除在外onStart()?目的是什么?
为什么我们不能没有生活onStart()。我仍然认为它是多余的(可能是因为无法完全理解其含义)。
Answers:
为什么不能仅将onStart()排除在onRestart()和onCreate()方法之后调用onResume()?目的是什么?
好的,因为我的第一个答案很长,所以我不会进一步扩展它,所以让我们尝试一下...
public DriveToWorkActivity extends Activity
implements onReachedGroceryStoreListener {
}
public GroceryStoreActivity extends Activity {}
请注意:我故意省略了对诸如super.onCreate(...)etc之类的调用。这是伪代码,因此请在此处给我一些艺术许可。;)
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()的越多,我重复的事情就越多。
所以,再次报价...
为什么不能仅将onStart()排除在onRestart()和onCreate()方法之后调用onResume()?
如果您不重写,onStart()则实际上是发生的情况。尽管的onStart()方法Activity将被隐式调用,但是代码中的效果实际上是onCreate() -> onResume()或onRestart() -> onResume()。
onCreate()和onRestart()会分享很多共同的代码,对不对?
Activity生命周期的每个阶段。onCreate(...)当实例化实例成员(UI元素等)时,创建阶段可能会做很多工作,但是“重新启动”不需要这样做。实际上,实际上Activities并不需要很多实现onCreate(...),onResume()而onPause()在您可能需要做其他事情并且关键是要了解将代码放置在何处的情况下,可以使用其他方法。
Activity生命周期方法-它是由Android OS来执行的,并且效率很高(假设应用程序开发人员知道他们在做什么并且也有效地进行了编码)。如果您进行了大量的Android开发,您将了解事情为什么以它们的方式运作-它不是100%完美的,但却是相当不错的。
onStart和之间的主要区别onResume是“可见性”和“用户交互”。这个驾驶汽车的隐喻令人困惑,但并没有真正的帮助。