2010-09-15 37 views
9

根据“应用基础”文章的“组件生命周期”一节,onResume()总是在视图变为活动状态时调用,与以前的状态无关。Android - 记事本教程 - 生命周期 - 一些工作做了两次?

在记事本教程,练习3,我已经发现了一些令人困惑的NoteEdit.java:
还有就是populateFields()的调用中的onCreate(),以及在的onResume()。
只有在onResume()才有足够的(甚至更好)吗?

在这样一个小例子,它不会做任何伤害,如果populateFields()进行两次,但在一个更大的应用程序,东西可以是不同的...

感谢和问候,
马库斯·N.

+2

叶普,我认为在onResume中调用它也应该更好。 – icyerasor 2011-03-06 17:40:45

+0

不是一个答案,但如果onStop被调用,然后onRestart,onCreate将不会被调用...仍然不能解释为什么它被调用onCreate在所有nesides可能约定和可读性 – CrackerJack9 2011-10-10 23:08:23

+0

onCreate是很好的初始化引用的东西,但是你想保存你正确注意到的onResume的状态处理的大部分是适当的地方。 另外请注意,你应该在AsyncTask中做到这一点,以保持用户的满意! Android活动生命周期页面上的图表是最好的参考,如果您想严格考虑,请根据用户切换屏幕等的正确组合下的某些细节来编程状态机活动。 – 2011-10-12 12:02:45

回答

-1

我可以在两个地方看到你需要它的地方,如果应用程序暂停,那么你会需要它在onResume,如果你的进程被杀死或用户导航回到活动,那么你会需要它在onCreate,尤其是如果你正在做一些预处理。

每文档....对的onResume(),他们建议使用它的重量轻通话不像的onCreate():

“活动的前景生命周期,直到到的onResume()的调用之间发生相应地调用onPause(),在此期间,活动在所有其他活动之前并与用户进行交互,活动可以频繁地在恢复状态和暂停状态之间进行 - 例如,当设备进入睡眠状态时,活动结果是交付,当一个新的意图交付时 - 所以这些方法中的代码应该相当轻量级。“

N otepad应用程序可能需要一个变量声明,如果该方法已被onCreate命中而不是在onResume()中重做。

+0

onResume始终调用(即使进程被终止并且活动被重新创建)。 – 2011-10-17 21:32:11

+0

是的,但用户可能需要在onCreate之前做一些事情,比如布局等,为什么你可能需要在那里调用那个函数。 – JPM 2011-10-17 21:58:43

+0

对。 onCreate是实例化布局等的正确位置。我只是说,如果调用onCreate,onResume将始终在它后面调用。 – 2011-10-17 22:40:20

1

从看Notepad3看,我会说你是对的。在onCreate()onResume()中,似乎没有任何理由让他们拨打populateFields()onResume就足够了。