Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OnCreate()与OnStart()的比较_Android_Android Activity_Android Lifecycle - Fatal编程技术网

Android OnCreate()与OnStart()的比较

Android OnCreate()与OnStart()的比较,android,android-activity,android-lifecycle,Android,Android Activity,Android Lifecycle,可能重复: OnCreate和OnStart之间有什么区别 我的理解是,OnCreate只在应用程序第一次打开时才被调用,以后再也不会被调用。这是真的吗?有人能用自己的话详细说明而不是复制和粘贴定义吗?谢谢大家! 只要您的设备没有停止活动(例如由于系统资源不足),那么无论何时您离开应用并返回,都会调用onStart。但是,如果应用程序进程被终止,那么当您返回onCreate时,将再次调用onCreate,因为您的所有资源都将被释放。最好从相反的函数开始:onDestroy和onStop来解释

可能重复:

OnCreate和OnStart之间有什么区别


我的理解是,OnCreate只在应用程序第一次打开时才被调用,以后再也不会被调用。这是真的吗?有人能用自己的话详细说明而不是复制和粘贴定义吗?谢谢大家!

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

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

在处理或关闭活动时调用onDestroy。下次打开时,将调用onCreate

每当应用程序离开视图且不再可见时,都会调用onStop。这通常是由在旧活动的基础上创建新活动引起的。当活动再次可见时,将调用onStart


本页上的图表很好地解释了活动可能处于的各种状态,以及相关的转换方法:

文档认真地——我不是在开玩笑——有一个描述活动生命周期(如何开始、工作和结束)如何运行的图表

直接链接的图像基本上表示:

  • 创建
    活动时调用
    onCreate()
    ;也就是说,它被启动或启动。(另外,当方向改变时会触发。)进程终止时会再次调用它,然后返回到
  • onStart()
    在启动时调用以下
    onCreate()
    。此外,当应用程序导航回
    onStop()
    之后(以及
    onRestart()
    之后),它也会被调用,这发生在
    活动
    不再可见之后(这是在“用户可以在屏幕上看到活动,尽管它可能不在前台并与用户交互”期间)

这个图表比我用不到1000个字就能更真实地解释它。

这个网站提供了Android生命周期的可靠图形表示:

只要应用程序可见,就会调用
onStart()
。这包括首次创建应用程序的时间,以及将其返回屏幕而不终止的时间。当用户切换应用程序且应用程序位于后台时,会发生第二种行为。当应用程序变为不可见时,将调用
onStop()
,但当应用程序完全“销毁”时,将调用
onDestroy()
。调用
ondestory()
后,必须在生命周期开始时再次创建应用程序


需要注意的是,在应用程序由于对话框之类的原因而失去焦点后,不会调用
onStart()
。在这种情况下,当重新获得焦点时,
onPause()
被调用,然后是
onResume()
。onCreate通常在应用程序启动时调用,但如果活动因其他原因被销毁/释放,也可能会调用onCreate。基本上,如果要对活动进行一次性设置,应该重写onCreate。如果您想在用户每次导航到活动时执行某些操作,则应覆盖onStart。如果您想在每次活动变为可见/活动时执行某些操作,请使用onResume。如果您想对整个应用程序进行一次性设置,即只运行一次,则应使用onCreate,但请检查是否已完成该设置,并仅在未完成设置时进行设置


查看此页面上非常有用的图表:

“我的理解是,OnCreate仅在应用程序第一次打开时才被调用。”不要混淆术语“应用程序”、“应用程序”和
活动
。即使
活动
被销毁,应用程序仍然可以运行,并且在销毁后,
活动
将再次“创建”,因此无论其他应用程序组件是否仍在运行,都将再次调用
onCreate(…)
。如果您说“失去焦点”,从技术上讲是不正确的,当弹出窗口(对话框)出现时,可能会发生这种情况。
活动
仍将可见,只是暂停而不是停止。当弹出窗口关闭时,基本的
活动将恢复。太棒了!非常感谢你,埃里克!还有一个问题要问你;我需要什么;setContentView(R.layout.activity);在OnStart中?或者是因为我的OnCreate已经有了它,所以它是多余的吗?@JoshBeckwith你只需要在创建布局时才需要它。只有在
onCreate()
中才能安全地处理。