3

我已经阅读了一些博客并访问了一些网站。我想知道在生命周期中哪个事件只触发了一次。阅读博客后,我意识到该onCreate()方法在生命周期中只被触发一次。我不知道我是对还是错。现在我的问题是,我只想在我更改横向或纵向时触发任何一次触发的事件,而不是在启动活动之后如果用户更改方向而不是未触发事件,则未触发此事件。我想知道启动 Activity 后仅触发一次的事件。这个 onCreate()

4

3 回答 3

8

在此处输入图像描述

onCreate并且onDestroyid 只触发了一次。

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

onDestroy:您的活动被销毁之前收到的最后一个电话。这可能是因为活动正在结束。

所以,把你的事件代码放在 onCreate 中。(但它取决于你的要求你想要做什么你的代码可能会改变)


活动流程:

firstonCreate被称为 --> Next --> onStart--> onResume--> your Activity is Running 显示你的布局。(无论您在 layout.xml 中添加了什么)

现在,如果您按下HOME 按钮,那么它会转到 --> onPause--> onStop。(活动不会破坏其在后台运行)。现在再次打开 Activity 它转到 --> onRestart--> onStart--> onResumme(activity is running again)

现在如果你按下返回按钮然后 --> onPause--> onStop--> onDestroy


编辑:

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

android:configChanges="orientation|keyboardHidden"在android清单文件中。

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

如果您为 API 级别 13 或更高级别进行开发,则必须使用

android:configChanges="orientation|screenSize"
于 2013-04-30T05:59:28.560 回答
4

制作一个虚拟应用程序,覆盖onCreate, onStart, onResume, onPause, onDestroy,onRestart放入Log.d("MYAPP", "onXXX called")其中并亲自查看调用的内容和顺序。

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

于 2013-04-30T05:58:32.360 回答
0

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

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();
        }
于 2013-04-30T06:03:58.873 回答