Android生命周期在生命周期中哪一个事件只触发一次?

Android生命周期在生命周期中哪一个事件只触发一次?,android,android-lifecycle,Android,Android Lifecycle,我读过一些博客,访问过一些网站。我想知道哪个事件在生命周期中只触发一次。阅读博客后,我意识到onCreate()方法在生命周期中只触发一次。我不知道我是对还是错。现在我的问题是,如果我更改横向方向或纵向方向,则我只想触发任何触发一次的事件。如果用户更改方向而不是事件未触发,则此事件未触发意味着启动活动后。我想知道哪个事件在开始活动后只触发一次。这个onCreate()创建一个虚拟应用程序,覆盖onCreate,onStart,onResume,onPause,onDestroy,onRestar

我读过一些博客,访问过一些网站。我想知道哪个事件在生命周期中只触发一次。阅读博客后,我意识到
onCreate()
方法在生命周期中只触发一次。我不知道我是对还是错。现在我的问题是,如果我更改横向方向或纵向方向,则我只想触发任何触发一次的事件。如果用户更改方向而不是事件未触发,则此事件未触发意味着启动活动后。我想知道哪个事件在开始活动后只触发一次。这个onCreate()创建一个虚拟应用程序,覆盖
onCreate
onStart
onResume
onPause
onDestroy
onRestart
Log.d(“MYAPP”,“onXXX调用”)
放在那里,自己看看调用的是什么,调用的顺序是什么

这样你就可以一劳永逸地用实际的方法学习东西。

onCreate
onDestroy
id只触发一次

onCreate:
在首次创建活动时调用。这是您应该进行所有常规静态设置的地方:创建视图、将数据绑定到列表等

onDestroy
:您在活动被销毁之前收到的最后一个呼叫。这可能是因为活动正在完成

因此,将事件代码放在onCreate中。(但这取决于您的需求,您尝试执行的操作可能会更改代码)


活动流程: 第一个
onCreate
被称为-->下一个-->
onStart
-->
onResume
-->您正在运行的活动将显示您的布局。(无论您在layout.xml中放了什么)

现在,如果您按下主页按钮,它将转到-->
onPause
-->
onStop
。(活动未在后台运行。现在再次打开活动,转到-->
重新启动
-->
重新启动
-->
重新启动
(活动再次运行)

现在,如果按后退按钮-->
onPause
-->
onStop
-->-->
onDestroy


编辑:

要在方向更改时停止重新启动活动,请使用

android:configChanges=“orientation | keyboardHidden”在android清单文件中

<activity android:name=".MyActivity"
          android:configChanges="orientation|keyboardHidden"
          android:label="@string/app_name">

您可以使用onCreate()中的首选项


感谢Dhawal Sodha的回答,我在问题中提到,我知道onCreate()方法被触发过一次,但现在我的问题是,如果我改变方向,那么这个事件就会再次被触发。Dhawal Sodha你的答案并不完全正确,但这可能对其他人也有帮助!!当用户退出应用程序时,可能应该重置首选项,因为它会在应用程序的整个生命周期中持续存在。但是没有好的地方可以这样做..谢谢shree202的回答,但是如果我在SharedReferences中存储了值,而不是用户启动第二次应用程序(不仅仅是活动),那么它就不能给我最好的输出..为什么??有什么问题吗?请描述一下。检查,也检查,检查我编辑的ans--->谢谢大家。在你们大家的帮助下,我已经解决了这个问题。我添加了这个onRetainonConfigurationInstance()方法,得到了我想要的解决方案。。感谢你们所有人。还在AndroidManifest.xml文件中添加了android:configChanges=“orientation | keyboardHidden | screenSize”。。
android:configChanges="orientation|screenSize"
SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(this);
        if (!prefs.getBoolean("firstTime", false)) {

// run your one time code


            SharedPreferences.Editor editor = prefs.edit();
            editor.putBoolean("firstTime", true);
            editor.commit();
        }