【问题标题】:Activity can do without onStart() particularly and onStop() as well?Activity 可以不用 onStart() 特别是 onStop() 吗?
【发布时间】:2013-11-05 15:37:27
【问题描述】:

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

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

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

你们明白这段话的意思吗?

【问题讨论】:

  • 一个活动被停止, onStop 被调用。这只是一个反馈的事情,调用 onSomething 并不会导致某些事情发生。此外,您需要阅读有关多态性的信息。仅仅因为您没有在活动中定义 onStart 并不意味着没有 onStart。其实还有超。

标签: android


【解决方案1】:

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

我会把它改写为

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

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

【讨论】:

  • "系统只是将其暂停并从屏幕上隐藏。" ...但他们说,如果活动部分隐藏和部分可见,则活动将被暂停;如果完全隐藏,则处于停止状态。谢谢你的改写,它在很大程度上让我清醒了。
  • 我可能应该使用“暂停”而不是“暂停”来防止同样的混乱!可悲的是,我想不出另一个同义词,意思是“在内存中但不执行”——停止、暂停、暂停、啊……
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    onStop 在 onPause 之后调用。

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

    【讨论】:

      【解决方案4】:

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

      @Override
      public void onPause(){
          super.onPause();
      
          // Your magic here!
      
      }
      

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

      【讨论】:

        猜你喜欢
        • 2011-04-21
        • 2012-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多