Почему onresume вызывается, когда я впервые открываю вкладку табхоста?

StackOverflow https://stackoverflow.com/questions/4473532

Вопрос

У меня есть табхост с некоторыми вкладками, и каждая вкладка реализовала метод Oneresume, потому что мне нужно перезагрузить все данные из удаленной базы данных каждый раз, когда пользователь снова вводит в табуст, а не только в первый раз, когда он открывает их.

Хорошо, это работает хорошо, но проблема в том, что когда пользователь впервые открывается вкладка, два метода, oncreate и onResume, называются, то мое приложение подключается два раза в базу данных, чтобы получить информацию .... Я хочу, чтобы меня вызвали только Create, когда пользователь впервые входит в Tabhost

Как избежать этой редкой проблемы?

Это было полезно?

Решение

Как указано в Документы жизненного цикла активности, Oncreate и OnResume всегда будут называться в первый раз, когда начинается деятельность. Возвращаясь к деятельности, по крайней мере, он будет вызван, но Oncreate может быть снова вызван, если Android будет необходим для освобождения ресурсов.

Если вам нужна настройка, каждый раз, когда вы возвращаетесь к деятельности, почему бы не только вкладывать логику в Oneresume?

Другие советы

Поскольку содержимое ваших вкладок является действием, они оба должны быть созданы (и возобновлены), когда вы запускаете приложение.

Один из способов избежать этого - использовать представления вместо действий в качестве содержимого вкладки. Таким образом, у вас есть только 1 onCreate() метод, потому что у вас есть только 1 активность ( TabActivity).

Я согласен с другими плакатами, что вы должны повторно фактически фактические приложения. Вы не можете просто ожидать, что вы вставьте автономное занятие в вкладку, и все имеет смысл.

При этом у вас может быть где -то флаг, который указывает, нуждается ли БД инициализация. В каждой деятельности onresume () у вас есть что -то вроде,

synchronized (MyLock.class) {
    if (!initialized) {
      initDb();
      MyLock.initialized = true;
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top