16

可能重复:
onCreate() 和 onStart() 之间的区别?
Android Activity 生命周期 - 所有这些方法的用途是什么?

OnCreate 和 OnStart 有什么区别?

我的理解是,仅在第一次打开应用程序时才调用 OnCreate,并且永远不会再次调用。这是真的?有人可以用自己的话详细说明而不是复制和粘贴定义吗?谢谢!

4

5 回答 5

20

只要您的设备没有终止活动,例如由于系统资源不足,那么每当您离开应用程序并返回时,就会调用 onStart。但是,如果应用程序进程被杀死,那么当您返回时,将再次调用 onCreate,因为您的所有资源都将被释放。

于 2012-09-17T23:53:09.483 回答
15

认真的文档——我不是在开玩笑——有一个非常非常漂亮的图像,描述了Activity生命周期(它如何开始、工作和结束)是如何运作的。

直接链接在这里的图像基本上是这样说的:

  • onCreate()在创建时调用Activity;即启动或启动。(另外,当方向改变时触发。)当进程被杀死时再次调用它,然后返回。
  • onStart()onCreate()在启动时被称为跟随。此外,当应用程序导航回 after onStop()(和follow在前台并与用户交互“)。onRestart()Activity

这张图用不到 1000 个字比我能做到的更准确地解释它。

于 2012-09-17T23:55:47.360 回答
3

最好从相反的函数开始解释这一点:onDestroy 和 onStop。

onDestroy 在 Activity 被处理或关闭时被调用。下次打开时,会调用 onCreate。

每当应用程序消失且不再可见时,就会调用 onStop。这通常是由在旧活动之上创建的新活动引起的。当活动再次可见时,将调用 onStart。

此页面上的图表很好地解释了活动可以处于的各种状态,以及相关的转换方法:http: //developer.android.com/training/basics/activity-lifecycle/starting.html

于 2012-09-17T23:54:43.123 回答
1

几乎。onCreate 通常在应用启动时调用,但也可能在 Activity 因其他原因被销毁/释放时调用。基本上,如果你想为 Activity 做一次设置,你应该重写 onCreate。如果您想在用户每次导航到 Activity 时执行某些操作,您应该覆盖 onStart。如果您想在每次 Activity 变为可见/活动时执行某些操作,请使用 onResume。如果您想为整个应用程序进行一次性设置,即只运行一次,您应该使用 onCreate,但请检查您是否已完成该设置,只有在您没有完成时才这样做。

查看此页面上非常有用的图表:活动参考

于 2012-09-17T23:57:41.700 回答
0

该网站提供了 Android 生命周期的可靠图形表示:http: //developer.android.com/training/basics/activity-lifecycle/starting.html

onStart()每当应用程序变得可见时调用。这包括首次创建应用程序的时间以及在未终止的情况下重新显示在屏幕上的时间。当用户切换应用程序并且应用程序位于后台时,会发生第二种行为。当应用程序变得不可见时,onStop()被调用,但是当应用程序被完全“销毁”时,onDestroy()被调用。调用后onDestroy(),必须在生命周期开始时再次创建应用程序。

重要的是要注意,onStart()在应用程序由于对话框之类的原因而失去焦点后不会调用它。在这种情况下,在重新获得焦点时onPause()调用onResume()

于 2012-09-17T23:57:18.327 回答