我已经阅读了一些博客并访问了一些网站。我想知道在生命周期中哪一个事件只被触发了一次。阅读博客后,我意识到onCreate()
方法在生命周期中只被触发一次。我不知道我是对还是错。现在我的问题是,我想解雇任何只有在我改变横向或纵向方向时触发一次的事件,而不是这个事件没有被触发意味着如果用户改变方向而不是未被触发的事件。我想知道在启动Activity之后哪个事件触发只有一次。这个onCreate()
答案 0 :(得分:7)
onCreate
和onDestroy
ID仅触发一次。
onCreate:
首次创建活动时调用。这是您应该进行所有常规静态设置的地方:创建视图,将数据绑定到列表等等......
onDestroy
:您的活动被销毁之前收到的最后一个电话。这可能是因为活动正在结束。
所以,请将您的事件代码放在onCreate中。(但是根据您的要求,您尝试执行的操作代码可能会发生变化)
首先调用onCreate
- >下一步 - > onStart
- > onResume
- > 您的“活动正在运行”会显示您的布局。 (无论你放在layout.xml中)
现在,如果按 HOME按钮,则转到 - > onPause
- > onStop
。 (活动不会破坏其在后台运行)。现在再次打开Activity,转到 - > onRestart
- > onStart
- > onResumme
(活动再次开始)。
现在如果你按下后退按钮然后 - > onPause
- > onStop
- > onDestroy
。
编辑:
在使用方向更改时停止重启活动
在android清单文件中 android:configChanges="orientation|keyboardHidden"
。
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
如果您为API级别13或更高级别开发,则必须使用
android:configChanges="orientation|screenSize"
答案 1 :(得分:3)
制作虚拟应用,覆盖onCreate
,onStart
,onResume
,onPause
,onDestroy
,onRestart
置Log.d("MYAPP", "onXXX called")
在那里,亲眼看看什么以及以什么顺序被召唤。
通过这种方式,您可以一劳永逸地学习实用的方法。
答案 2 :(得分: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();
}