我已经阅读了一些博客并访问了一些网站。我想知道在生命周期中哪个事件只触发了一次。阅读博客后,我意识到该onCreate()
方法在生命周期中只被触发一次。我不知道我是对还是错。现在我的问题是,我只想在我更改横向或纵向时触发任何一次触发的事件,而不是在启动活动之后如果用户更改方向而不是未触发事件,则未触发此事件。我想知道启动 Activity 后仅触发一次的事件。这个 onCreate()
3 回答
onCreate
并且onDestroy
id 只触发了一次。
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"
制作一个虚拟应用程序,覆盖onCreate
, onStart
, onResume
, onPause
, onDestroy
,onRestart
放入Log.d("MYAPP", "onXXX called")
其中并亲自查看调用的内容和顺序。
这样你就可以一劳永逸地学习实用的东西。
您可以在 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();
}