5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
|
|
1 | |
Смена ориентации с портретной на альбомную методом create08.08.2014, 15:59. Показов 3538. Ответов 16
Метки нет (Все метки)
Добрый день!
Имеется две ориентации: портреная и альбомная. Альбомная лежит в папке layout-land, портреная layout. При смене ориентации метод create вызывается снова, что сказывается на производительности. Хотелось бы, что бы метод не вызывался повторно. Подскажите, как это сделать. Спасибо
0
|
08.08.2014, 15:59 | |
Ответы с готовыми решениями:
16
Добавить условие, чтобы скрипт не работал в портретной ориентации экрана AutoLayout и смена ориентации Смена ориентации экрана Смена ориентации координат |
349 / 240 / 34
Регистрация: 16.01.2010
Сообщений: 766
|
|
08.08.2014, 17:51 | 2 |
Запретить смену ориентации. Других вариантов быть не может.
1
|
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
|
|
08.08.2014, 18:24 [ТС] | 3 |
Зачем же запрещать, если у меня два layout для одной activity, для этого и создавалось две, что бы все было компактно в любой ориентации. Возможно, вы не совсем поняли мой вопрос?
0
|
349 / 240 / 34
Регистрация: 16.01.2010
Сообщений: 766
|
|
08.08.2014, 19:35 | 5 |
Возможно вы не поняли мой ответ. Невозможно так сделать. При смене ориентации, активити пересоздается, и это неминуемо ведет к вызову OnCreate(). Таков жизненный цикл активити, и влиять на это, мы не можем.
http://stackoverflow.com/quest... ethods-for
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
||||||
08.08.2014, 20:00 | 6 | |||||
Ну можно же например сделать boolean isFirstRun; и после первого создания установить его в false. И все методы в onCreate() делать в
0
|
349 / 240 / 34
Регистрация: 16.01.2010
Сообщений: 766
|
|
09.08.2014, 15:16 | 7 |
А при таком раскладе, разве будет удовлетворено требование ТС
ТС, хочет, чтобы интерфейс менялся, а вот метод не вызвался. Ну примерно как, если бы девственница, была девственницой всю жизнь, а не только до первого раза.
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
09.08.2014, 15:20 | 8 |
Ну ок, в if(isFirstRun){} засунуть только то что ему нужно запустить 1 раз, а изменение интерфейса просто в onCreate(). И вообще есть же onResume() если прописать там что то, при перевороте onCreate не должен вызываться.
1
|
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
|
|
09.08.2014, 18:20 [ТС] | 9 |
Подскажите, где в коде объявить isFirstRun?
Не поделитесь кодом?
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
09.08.2014, 21:49 | 10 |
Там же где любую другую переменную) Кодом пока не могу - нет компа под рукой.
0
|
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
|
||||||
09.08.2014, 21:54 [ТС] | 11 | |||||
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
09.08.2014, 21:59 | 12 |
Переменные объявляются в теле класса, не в методах. Если вы при первом запуске записываете что то в любую переменную(что то тяжелое) можно проверять ее на null. Если не равна null - не загружать, если равна - загрузить.
0
|
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
|
|
10.08.2014, 00:12 [ТС] | 13 |
Да, я объявил ее в теле класса, но все равно переменная всегда равна true.
Разве можно сделать проверку на null? Разве boolean не true или false? Добавлено через 1 час 47 минут Значит совсем нет решения? Как же тогда работают калькуляторы с двумя layout's?
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
10.08.2014, 00:19 | 14 |
По-моему смена ориентации неминуемо ведет к onPause() onStart() и onResume() а onCreate() толбко при первой загрузке.
0
|
349 / 240 / 34
Регистрация: 16.01.2010
Сообщений: 766
|
|
10.08.2014, 14:58 | 15 |
Насчет решения не знаю. Вы же спрашивали как не вызывать OnCreate()? Вообще, не должно ничего тормозить.
Вы надеюсь туда - в OnCreate() "циклов и прочих потоков не напихали"? Ну или там невероятносно тяжелый интерфейс с 20 и более вложениями.
0
|
Android
|
|
10.08.2014, 15:27 | 16 |
ну так и будет т.к. ативити заново создается и создаются новые переменные
думаю если использовать данный подход то переменную следует делать глобальной т.е. определять в классе наследника Application ...
0
|
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
|
|
10.08.2014, 21:17 [ТС] | 17 |
Как раз в onCreate() и вызывается метод, который делает запросы в БД, который длится около секунды, но при повороте это заметно
0
|
10.08.2014, 21:17 | |
10.08.2014, 21:17 | |
Помогаю со студенческими работами здесь
17
Принудительная смена ориентации экрана в iOS 7 Смена ориентации экрана перезапускает приложение Смена ориентации на планшете и запрет на телефоне Смена ориентации страниц на одну кнопку (openoffice) Профессиональный рост и смена парадигмы проф. ориентации Кнопка "домой", смена ориентации и прочее :) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |