android - onStart() 和 onResume() 的区别

标签 android

我无法理解 onStart() 过渡状态的含义。 onResume() 方法总是在 onStart() 之后调用。为什么不能在 onRestart()onCreate() 方法之后调用 onResume() 只是不包括 onStart() ?它的目的是什么?

为什么我们不能没有 onStart()。我仍然认为它是多余的(可能是因为没有完全理解它的含义)。

最佳答案

Why can't it be the onResume() is invoked after onRestart() and onCreate() methods just excluding onStart()? What is its purpose?

好的,因为我的第一个答案很长,我不会进一步扩展它,所以让我们试试这个......

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() 是我临时 parking 的时候。所以我开车然后遇到红灯,所以我停下来......灯变绿了,我继续。另一个红灯,我暂停,然后绿灯,所以我继续。 onPause() -> onResume() -> onPause() -> onResume() 循环是一个紧凑的循环,并且在我的整个旅程中发生了很多次。

从重新开始(准备继续我的旅程)到重新开始的循环可能不太常见。在一种情况下,我发现杂货店并启动了 GroceryStoreActivity(强制我的 DriveToWorkActivityonStop() 的位置)。当我从商店回来时,我会经过 onRestart()onStart() 然后继续我的旅程。

我可以将 onStart() 中的代码同时放入 onCreate()onRestart() 中,而不必费心重写 onStart() 除了 onCreate() -> onResume()onRestart() -> onResume() 之间需要做的事情更多,我复制的东西越多。

所以,再次引用...

Why can't it be the onResume() is invoked after onRestart() and onCreate() methods just excluding onStart()?

如果你不覆盖 onStart() 那么这实际上就是发生的事情。虽然 ActivityonStart() 方法会被隐式调用,但您代码中的效果实际上是 onCreate() -> onResume()onRestart() -> onResume().

关于android - onStart() 和 onResume() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4553605/

相关文章:

android - SSL 握手异常 : Certificate Exception using HttpURLConnetion with Android 4. 2.2

Android 如何在单击退格键时聚焦另一个编辑文本

java - 如何将子集合添加到 Firebase Cloud Firestore 中的文档

android - 创建一个在 Android 手机插接时显示的应用程序

android - DiffUtil 和 notificationItemInserted 之间的区别

android - Android 的新遗物 : can new relic track http requests made using loopj (android-async-http)?

android - 滚动 ListView 时应用程序崩溃

java - 如何在 Android Studio 中更改已弃用的代码

android - Activity 在 alertDialog show() 方法处泄漏了窗口

android - 在 Android 中按像素滚动 ListView