Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
#1

Смена ориентации с портретной на альбомную методом create - Программирование Android

08.08.2014, 15:59. Просмотров 1629. Ответов 16
Метки нет (Все метки)

Добрый день!
Имеется две ориентации: портреная и альбомная. Альбомная лежит в папке layout-land, портреная layout. При смене ориентации метод create вызывается снова, что сказывается на производительности.
Хотелось бы, что бы метод не вызывался повторно. Подскажите, как это сделать. Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2014, 15:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Смена ориентации с портретной на альбомную методом create (Программирование Android):

Смена ориентации экрана - Программирование Android
в папке layout файл screen.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

Смена ориентации на планшете и запрет на телефоне - Программирование Android
Требуется, что бы программа анализировала где запущена (на планшете или телефоне). Если на телефоне фиксировала "портретную" ориентацию и...

Смена ориентации экрана перезапускает приложение - Программирование Android
Создаю на своем мобильном приложении. На очередном этапе заметил, что смена ориентации экрана как бы перезапускает приложение: отображаются...

Кнопка "домой", смена ориентации и прочее :) - Программирование Android
Добрый вечер уважаемые. не могу решить вот такую проблему: Сделал пример отсюда:...

Как заблокировать альбомную ориентацию? - Программирование Android
Как заблокировать альбомную ориентацию, но не во всем приложении, а только в определенных классах?...

Добавить условие, чтобы скрипт не работал в портретной ориентации экрана - jQuery
Есть скрипт. Заставляет строчку меню прилипать к верху экрана при скроле страницы. $(document).ready(function(){ var...

16
Vladimirys
309 / 206 / 25
Регистрация: 16.01.2010
Сообщений: 589
08.08.2014, 17:51 #2
Запретить смену ориентации. Других вариантов быть не может.
1
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
08.08.2014, 18:24  [ТС] #3
Зачем же запрещать, если у меня два layout для одной activity, для этого и создавалось две, что бы все было компактно в любой ориентации. Возможно, вы не совсем поняли мой вопрос?
0
YuraAAA
1576 / 1317 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
08.08.2014, 19:04 #4
никак в общем-то. Потому что пересоздаётся активити. Можно конечно поставить флаг в манифесте, но тогда активити не будет брать другой лейаут.
1
Vladimirys
309 / 206 / 25
Регистрация: 16.01.2010
Сообщений: 589
08.08.2014, 19:35 #5
Цитата Сообщение от suvorov Посмотреть сообщение
Возможно, вы не совсем поняли мой вопрос?
Возможно вы не поняли мой ответ. Невозможно так сделать. При смене ориентации, активити пересоздается, и это неминуемо ведет к вызову OnCreate(). Таков жизненный цикл активити, и влиять на это, мы не можем.
http://stackoverflow.com/questions/8...se-methods-for
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
08.08.2014, 20:00 #6
Ну можно же например сделать boolean isFirstRun; и после первого создания установить его в false. И все методы в onCreate() делать в
Java
1
2
3
4
if(isFirstRun){
//Тут весь код из onCreate()
isFirstRun = false;
}
И все, при повороте не будет перезапускаться, а если нужно перезапустить - установить isFirstRun = true; и далее onCreate();
0
Vladimirys
309 / 206 / 25
Регистрация: 16.01.2010
Сообщений: 589
09.08.2014, 15:16 #7
Цитата Сообщение от Spelcrawler Посмотреть сообщение
И все, при повороте не будет перезапускаться, а если нужно перезапустить - установить isFirstRun = true; и далее onCreate();
А при таком раскладе, разве будет удовлетворено требование ТС
Цитата Сообщение от suvorov Посмотреть сообщение
же запрещать, если у меня два layout для одной activity, для этого и создавалось две, что бы все было компактно в любой ориентации.
ТС, хочет, чтобы интерфейс менялся, а вот метод не вызвался. Ну примерно как, если бы девственница, была девственницой всю жизнь, а не только до первого раза.
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
09.08.2014, 15:20 #8
Ну ок, в if(isFirstRun){} засунуть только то что ему нужно запустить 1 раз, а изменение интерфейса просто в onCreate(). И вообще есть же onResume() если прописать там что то, при перевороте onCreate не должен вызываться.
1
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
09.08.2014, 18:20  [ТС] #9
Цитата Сообщение от Spelcrawler Посмотреть сообщение
if(isFirstRun){
//Тут весь код из onCreate()
isFirstRun = false;
}
Подскажите, где в коде объявить isFirstRun?

Цитата Сообщение от Spelcrawler Посмотреть сообщение
И вообще есть же onResume()
Не поделитесь кодом?
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
09.08.2014, 21:49 #10
Там же где любую другую переменную) Кодом пока не могу - нет компа под рукой.
0
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
09.08.2014, 21:54  [ТС] #11
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Там же где любую другую переменную
Java
1
2
3
4
5
6
7
boolean isFirstRun = true;
 
//в методе onCreate
if(isFirstRun){         
    //код
    isFirstRun =false;
}
При смене ориентации, переменная isFirstRun всегда равна true. Может я вас не так понял?
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
09.08.2014, 21:59 #12
Переменные объявляются в теле класса, не в методах. Если вы при первом запуске записываете что то в любую переменную(что то тяжелое) можно проверять ее на null. Если не равна null - не загружать, если равна - загрузить.
0
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
10.08.2014, 00:12  [ТС] #13
Да, я объявил ее в теле класса, но все равно переменная всегда равна true.
Разве можно сделать проверку на null? Разве boolean не true или false?

Добавлено через 1 час 47 минут
Цитата Сообщение от Vladimirys Посмотреть сообщение
При смене ориентации, активити пересоздается, и это неминуемо ведет к вызову OnCreate()
Значит совсем нет решения? Как же тогда работают калькуляторы с двумя layout's?
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
10.08.2014, 00:19 #14
По-моему смена ориентации неминуемо ведет к onPause() onStart() и onResume() а onCreate() толбко при первой загрузке.
0
Vladimirys
309 / 206 / 25
Регистрация: 16.01.2010
Сообщений: 589
10.08.2014, 14:58 #15
Цитата Сообщение от suvorov Посмотреть сообщение
Значит совсем нет решения? Как же тогда работают калькуляторы с двумя layout's?
Насчет решения не знаю. Вы же спрашивали как не вызывать OnCreate()? Вообще, не должно ничего тормозить.
Вы надеюсь туда - в OnCreate() "циклов и прочих потоков не напихали"? Ну или там невероятносно тяжелый интерфейс с 20 и более вложениями.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2014, 14:58
Привет! Вот еще темы с ответами:

Смена ориентации координат - Visual Basic
как сделатьтак, чтобы вертикалинвя координата была направленна не вниз, а вверх?

AutoLayout и смена ориентации - Программирование iOS
Добрый день! Использую AutoLayout. При повороте экрана все растягивается как надо. Но на элементы нельзя нажать, тоесть не происходят...

Принудительная смена ориентации экрана в iOS 7 - Программирование iOS
Доброго времени суток. Мое приложение спроектировано таким образом, что первый и второй экраны поддерживают только портретную ориентацию,...

Смена ориентации страниц на одну кнопку (openoffice) - OpenOffice/LibreOffice
Здравствуйте. Подскажите, можно ли как нить задать смену ориентации страниц на одну кнопку, а не заходить формат-> страница. Т.е я нажимаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
10.08.2014, 14:58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru