سؤال

i have a tabhost with some tabs, and each tab have implemented the method onresume, because i need to reload all the data from a remote database each time the user enter again in a tabhost, not only the first time he opens it.

ok, it works nice, but the problem is that when the user opens for the first time a tab, the two methods, onCreate and onResume are called, then, my app connect two times into the database to retrieve the info.... i want only to be called onCreate when the user enter for the first time into the tabhost

how to avoid this rare problem?

هل كانت مفيدة؟

المحلول

As stated on the Activity lifecycle docs, onCreate and onResume will always both be called the first time an Activity is started. When going back to Activity, at least onResume will be called, but onCreate may be called again if Android needed to free up resources.

If you need the setup to occur every time you return to the activity, why not only put the logic in onResume?

نصائح أخرى

Since your tabs' contents are activities, then they both have to be created (and resumed) when you start the app.

One way to avoid this, is to use views instead of activities as the tab content. That way, you only have 1 onCreate() method because you only have 1 activity (the TabActivity).

i agree with the other posters that you should re-factor your app. you can't just expect to stick a stand alone activity into a tab and have everything make sense.

that being said, you could have a flag somewhere that indicates if the DB needs initialization. in each activity's onResume(), you have something like,

synchronized (MyLock.class) {
    if (!initialized) {
      initDb();
      MyLock.initialized = true;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top