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

好的,它可以很好地工作,但是问题是,当用户首次打开选项卡时,两种方法,ongreate和on Resume被调用,然后,我的应用程序将我的应用程序连接到数据库中两次以检索信息。当用户首次进入TABHOST时,我只想被称为on Create

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

有帮助吗?

解决方案

活动生命周期文档, ,Oncreate和on Resume始终将被称为首次开始活动。返回活动时,至少会调用on Resume,但是如果Android需要释放资源,则可能会再次召集。

如果您需要每次返回活动时都需要设置,为什么不仅将逻辑放入resmume中呢?

其他提示

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

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

我同意其他海报,您应该将应用程序重新系列。您不能只是期望将一项独立的活动插入标签中,并让一切都有意义。

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

synchronized (MyLock.class) {
    if (!initialized) {
      initDb();
      MyLock.initialized = true;
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top