0

这是我从本培训教程中复制和粘贴的文本。

“由于系统在停止时会将您的 Activity 实例保留在系统内存中,因此您可能根本不需要实现 onStop() 和 onRestart()(甚至 onStart() 方法。对于大多数相对而言很简单,活动将停止并重新启动就好了,您可能只需要使用 onPause()来暂停正在进行的操作并断开与系统资源的连接。”

我不明白。因为据我所知,一个活动只能通过调用 onStop() 来停止,并且只能通过调用 onStart() 来启动。如果没有 onStart 方法,活动如何开始。

你们明白他们在这一段中的意思吗?

4

4 回答 4

2

我认为他们将您与“停止”一词混淆了,该词在该段落中似乎具有多种含义。

我会把它改写为

因为系统将您的 Activity 实例保留在系统内存中,当它不在前台时,您可能根本不需要实现 onStop() 和 onRestart() (甚至 onStart() 方法。对于大多数活动相对简单,活动将暂停并重新启动就好了,您可能只需要使用 onPause() 来暂停正在进行的操作并断开与系统资源的连接。

关键是该应用程序可能看起来已停止,而实际上系统只是将其暂停并将其隐藏在屏幕上。当用户再次启动它时,应用程序不需要启动(因为它在技术上并没有停止),所以它只是恢复了。

于 2013-11-05T15:46:36.393 回答
1

请确保,一个 Activity 从 onCreate 方法开始,然后 onStart 被系统调用。如果您覆盖 onStart 方法,那么您的覆盖方法也将在 onCreate 方法之后调用。如果您不覆盖,则调用默认版本的 onStart。

onStop 在 onPause 之后调用。

请查看此链接,并查看 Activity 生命周期。你的概念会很清楚。 onCreate() 和 onStart() 的区别?

于 2013-11-05T15:48:17.693 回答
1

当你创建一个 Activity 并扩展基类 Activity 时,基类中的onStop()、onStart() 和 onRestart()方法中已经有代码。

您的活动只是扩展了这些方法,这意味着您可以通过覆盖它们来向它们添加更多代码。

因此,即使活动仅通过这些方法启动和停止,您也不必在应用程序中显式覆盖它们。在大多数情况下,您甚至不必担心它们:它们将由您从中扩展的基类调用。

于 2013-11-05T15:43:13.787 回答
0

您可以很好地使用 Activity 而无需 - 如果您需要在 onPause() 中做一些特殊的事情,您可以覆盖该方法:

@Override
public void onPause(){
    super.onPause();

    // Your magic here!

}

onStart()、onStop() 等也是如此。你不需要重写这些方法,但如果你需要做一些特定的事情,你可以这样做。

于 2013-11-05T15:42:44.777 回答