根据“应用程序基础”一文的“组件生命周期”一节,当视图变为活动状态时,始终会调用onResume(),而与之前的状态无关。
在Notepad教程练习3中,我发现NoteEdit.java中有些令人困惑:
在onCreate()和onResume()中调用populateFields()。
仅仅在onResume()中使用它是否足够(甚至更好)?
在这么小的例子中,如果populateFields()执行两次会不会造成任何伤害,但是在更大的App中,事情可能会有所不同......
谢谢和问候,
Markus N。
答案 0 :(得分:1)
从Notepad3看,我会说你是对的。他们似乎没有理由在populateFields()
和onCreate()
中拨打onResume()
。 onResume
就足够了。
答案 1 :(得分:-1)
我可以在两个地方看到你需要的地方,如果应用程序暂停,那么你需要它在onResume中,如果你的进程被杀死或者用户导航回活动那么你将在onCreate中需要它,特别是如果你正在做一些pre - 处理。
根据文档....对于onResume(),他们建议将它用于轻量级调用,与onCreate()不同:
“活动的前景生命周期发生在对onResume()的调用之间,直到对onPause()的相应调用。在此期间,活动在所有其他活动的前面并与用户交互。可以经常在恢复和暂停状态之间进行 - 例如,当设备进入休眠状态,交付活动结果时,交付新意图时 - 这些方法中的代码应该相当轻量级。“
记事本应用程序可能需要声明一个变量,如果该方法已被onCreate命中,而不是在onResume()中重做。