是应该所有初始化都在onResume()而不是onCreate()?

时间:2014-03-06 13:40:32

标签: android

鉴于在onPause()之后只保证onResume()运行并且状态丢失。 是应该所有初始化都在onResume()而不是onCreate()?

例如,

myDbHelper = new MyDbHelper(getApplicationContext());

它在onCreate()中。我应该将它移动到onResume()吗? 我有一个listAdapter。它应该在onResume()中创建吗?

对于单身人士,是的,他们将以不同的方式实施see但其他变量呢?

android docs

2 个答案:

答案 0 :(得分:1)

现在我正在处理与您的主题相关的事情。我强烈建议您将所有变量重用到onResume()中。因为你可以完成()你的活动B,因此在活动A中调用的唯一方法是onResume()。还可以使用null模式对象来避免变量的空指针异常。

答案 1 :(得分:1)

并非总是 - 当onPause()事件被触发时,当活动暂时失去焦点(如某些弹出事件)时,onResume()会被触发,然后再次获得焦点(从而触发onResume())。在这种情况下,如果您在onResume()中初始化了变量,那么它们将在此时重新初始化,并且您将丢失先前的值。

我能想到你在onResume()中做什么的最好的例子就是当你设置一个BroadcastReceiver时 - 你不希望接收器在警报到达前台时触发某事(你得到了一般信息)理念)。