当我第一次打开tabhost的选项卡时,为什么调用onResume?

时间:2010-12-17 18:14:00

标签: android android-tabhost onresume

我有一个带有一些标签的tabhost,每个标签都实现了onresume方法,因为每次用户再次在tabhost中输入时我需要从远程数据库重新加载所有数据,而不仅是他第一次打开它

好吧,它运行良好,但问题是,当用户第一次打开一个选项卡时,会调用onCreate和onResume这两个方法,然后,我的应用程序连接两次进入数据库以检索信息。 ...当用户第一次进入tabhost

时,我只希望被调用onCreate

如何避免这种罕见的问题?

3 个答案:

答案 0 :(得分:15)

Activity lifecycle docs所述,onCreate和onResume将始终在第一次启动Activity时调用。返回Activity时,至少会调用onResume,但如果Android需要释放资源,则可以再次调用onCreate。

如果您需要在每次返回活动时进行设置,为什么不将逻辑放在onResume中?

答案 1 :(得分:0)

由于标签的内容是活动,因此在启动应用程序时都必须创建(并恢复)它们。

避免这种情况的一种方法是使用视图而不是活动作为选项卡内容。这样,您只有1个onCreate()方法,因为您只有1个活动(TabActivity)。

答案 2 :(得分:0)

我同意其他海报,你应该重新考虑你的应用程序。你不能只想把一个独立的活动放在一个标签中,让一切都有意义。

话虽如此,你可以在某个地方有一个标志,指示数据库是否需要初始化。在每个活动的onResume()中,你有类似的东西,

synchronized (MyLock.class) {
    if (!initialized) {
      initDb();
      MyLock.initialized = true;
    }
}