【问题标题】:What does onStart() really do? - Android [duplicate]onStart() 到底是做什么的? - Android [重复]
【发布时间】:2014-01-23 07:44:32
【问题描述】:

我一直想知道 onStart() 函数在 android 生命周期中的确切作用。网上的大多数资源只是说 - 在您的活动在屏幕上可见之前调用它。

但是到目前为止我所做的应用程序我从未使用过onStart()。我在 onCreate() 本身中进行所有初始化。

android生命周期中的所有其他状态都有一些或其他的意义,但onStart()的作用不是很清楚。

在 onStart() 中有什么具体的事情必须要做吗?生命周期中是否真的需要 onStart(),因为所有初始化都可以在 onCreate() 中完成,并且在活动变得可见之前也会调用它。

谁能帮我清楚地理解 onStart() 。 在此先感谢:)

【问题讨论】:

  • 我已经查看了那个帖子,但我仍然不清楚 onStart() 的作用是什么,这就是为什么我不得不再次问这个问题以更好地了解 onStart()

标签: android android-lifecycle


【解决方案1】:

onStart() 在活动从停止状态恢复时被调用。例如,如果您有活动 A 并从中启动活动 B,则活动 A 将暂停 (onPause()) 然后停止 (onStop()) 并移至后退堆栈。在此之后,如果您按 Back 进入您的活动 B,B 将被暂停(onPause())、停止(onStop())和销毁(onDestroy()),并且活动 A 将从后堆栈恢复,启动(@987654327 @) 并恢复 (onResume())。可以看到,系统不会再为A调用onCreate()

如何使用onStart()?例如,您应该在 onStop() 中取消注册 GPS、传感器等的侦听器,然后在 onStart() 中再次注册。如果您在onCreate() 注册它并在onDestroy() 注销它,那么 GPS 服务将一直工作,它会耗尽电池。

【讨论】:

  • 我认为它变得清晰了。所以onStart()的主要作用是在activity被暂停后调用的时候。如果 onCreate() 被调用,那么所有的初始化都应该再次完成,通过使用 onStart() 我们可以初始化那些在 onstop() 中没有初始化的东西。所以基本上 onStart() 可以用来初始化那些我们将在 onStop() 中取消初始化的东西。谢谢它现在清楚了:)
  • @user3064175 不完全是。仔细阅读生命周期。在某些情况下,onPause() 之后的下一个回调是onCreate()
  • @Simon 是的,你是对的。方向变化(和活动重新创建)可能会导致这种情况,例如
  • 哦,是的,如果活动处于 onstop 状态并且如果进程由于某种原因被终止,则活动返回到 onCreate,然后是 onstart。谢谢西蒙提醒
  • @user3064175 有不同的处理方式,但我最喜欢的假设是,一旦任何活动进入后台,接下来可能会调用 onCreate()。我将需要的内容保存在 onPause() 中,然后在 onResume() 中恢复。只有活动设置(获取对视图的引用、设置侦听器等)在 onCreate() 中完成。这涵盖了除电池拉动以外的所有情况,但我不是唯一一个对此有问题的人;)
【解决方案2】:

当 Activity 对用户可见时调用。

如果活动进入前台,则跟随 onResume(),如果活动隐藏,则跟随 onStop()。

更多: http://developer.android.com/reference/android/app/Activity.html

【讨论】:

    【解决方案3】:

    如果我想使用 onStart,我个人会做什么,我将在 onStart 方法中分配我的侦听器(OnclickListener 等)。

    我认为它真的没用,因为你可以在 onCreate 中做你想做的每一件事。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2012-12-05
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 2012-12-24
      • 2015-08-10
      • 1970-01-01
      相关资源
      最近更新 更多