活动可以不用onStart()特别是onStop()吗?

时间:2013-11-05 15:37:28

标签: android

这是我从this training tutorial复制并粘贴的文字。

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

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

您是否了解本段中的含义?

4 个答案:

答案 0 :(得分:2)

我认为他们让你混淆了“停止”这个词,它似乎在段落中有多重含义。

我将其改写为

  

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

请确保,一个Activity从onCreate方法开始,然后由系统调用onStart。如果重写onStart方法,则在onCreate方法之后也会调用重写的方法。如果不覆盖,则调用默认版本的onStart。

在onPause之后调用onStop。

请检查此链接,并查看活动生命周期。你的概念很清楚。 Difference between onCreate() and onStart()?

答案 3 :(得分:0)

你可以使用一个Activity而没有 - 如果你需要在onPause()中做一些特别的事情,你可以覆盖这个方法:

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

    // Your magic here!

}

同样适用于onStart(),onStop()等。您不需要覆盖这些方法,但如果您需要执行某些特定操作,则可以这样做。