5

我有一个带有一些选项卡的选项卡,每个选项卡都实现了 onresume 方法,因为每次用户再次进入选项卡主机时,我都需要重新加载远程数据库中的所有数据,而不仅仅是他第一次打开它。

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

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

4

3 回答 3

15

Activity 生命周期文档中所述,onCreate 和 onResume 将始终在第一次启动 Activity 时被调用。回到Activity时,至少会调用onResume,但如果Android需要释放资源,可能会再次调用onCreate。

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

于 2010-12-17T18:33:48.453 回答
0

我同意其他海报的观点,即您应该重新考虑您的应用程序。您不能只期望将独立活动粘贴到选项卡中并让所有内容都有意义。

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

synchronized (MyLock.class) {
    if (!initialized) {
      initDb();
      MyLock.initialized = true;
    }
}
于 2010-12-17T20:20:46.230 回答
0

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

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

于 2010-12-17T18:17:50.967 回答