我有一个带有一些标签的tabhost,每个标签都实现了onresume方法,因为每次用户再次在tabhost中输入时我需要从远程数据库重新加载所有数据,而不仅是他第一次打开它
好吧,它运行良好,但问题是,当用户第一次打开一个选项卡时,会调用onCreate和onResume这两个方法,然后,我的应用程序连接两次进入数据库以检索信息。 ...当用户第一次进入tabhost 时,我只希望被调用onCreate如何避免这种罕见的问题?
答案 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;
}
}