Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
1

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

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

Author24 — интернет-сервис помощи студентам
Добрый день!
Имеется две ориентации: портреная и альбомная. Альбомная лежит в папке layout-land, портреная layout. При смене ориентации метод create вызывается снова, что сказывается на производительности.
Хотелось бы, что бы метод не вызывался повторно. Подскажите, как это сделать. Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2014, 15:59
Ответы с готовыми решениями:

Добавить условие, чтобы скрипт не работал в портретной ориентации экрана
Есть скрипт. Заставляет строчку меню прилипать к верху экрана при скроле страницы....

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

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

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

16
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
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
08.08.2014, 19:04 4
никак в общем-то. Потому что пересоздаётся активити. Можно конечно поставить флаг в манифесте, но тогда активити не будет брать другой лейаут.
1
349 / 240 / 34
Регистрация: 16.01.2010
Сообщений: 766
08.08.2014, 19:35 5
Цитата Сообщение от suvorov Посмотреть сообщение
Возможно, вы не совсем поняли мой вопрос?
Возможно вы не поняли мой ответ. Невозможно так сделать. При смене ориентации, активити пересоздается, и это неминуемо ведет к вызову 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() делать в
Java
1
2
3
4
if(isFirstRun){
//Тут весь код из onCreate()
isFirstRun = false;
}
И все, при повороте не будет перезапускаться, а если нужно перезапустить - установить isFirstRun = true; и далее onCreate();
0
349 / 240 / 34
Регистрация: 16.01.2010
Сообщений: 766
09.08.2014, 15:16 7
Цитата Сообщение от Spelcrawler Посмотреть сообщение
И все, при повороте не будет перезапускаться, а если нужно перезапустить - установить isFirstRun = true; и далее onCreate();
А при таком раскладе, разве будет удовлетворено требование ТС
Цитата Сообщение от suvorov Посмотреть сообщение
же запрещать, если у меня два layout для одной activity, для этого и создавалось две, что бы все было компактно в любой ориентации.
ТС, хочет, чтобы интерфейс менялся, а вот метод не вызвался. Ну примерно как, если бы девственница, была девственницой всю жизнь, а не только до первого раза.
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
Цитата Сообщение от Spelcrawler Посмотреть сообщение
if(isFirstRun){
//Тут весь код из onCreate()
isFirstRun = false;
}
Подскажите, где в коде объявить isFirstRun?

Цитата Сообщение от Spelcrawler Посмотреть сообщение
И вообще есть же onResume()
Не поделитесь кодом?
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
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Там же где любую другую переменную
Java
1
2
3
4
5
6
7
boolean isFirstRun = true;
 
//в методе onCreate
if(isFirstRun){         
    //код
    isFirstRun =false;
}
При смене ориентации, переменная isFirstRun всегда равна true. Может я вас не так понял?
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 минут
Цитата Сообщение от Vladimirys Посмотреть сообщение
При смене ориентации, активити пересоздается, и это неминуемо ведет к вызову OnCreate()
Значит совсем нет решения? Как же тогда работают калькуляторы с двумя 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
Цитата Сообщение от suvorov Посмотреть сообщение
Значит совсем нет решения? Как же тогда работают калькуляторы с двумя layout's?
Насчет решения не знаю. Вы же спрашивали как не вызывать OnCreate()? Вообще, не должно ничего тормозить.
Вы надеюсь туда - в OnCreate() "циклов и прочих потоков не напихали"? Ну или там невероятносно тяжелый интерфейс с 20 и более вложениями.
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
10.08.2014, 15:27 16
Цитата Сообщение от suvorov Посмотреть сообщение
При смене ориентации, переменная isFirstRun всегда равна true.
ну так и будет т.к. ативити заново создается и создаются новые переменные

думаю если использовать данный подход то переменную следует делать глобальной т.е. определять в классе наследника Application ...
0
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
10.08.2014, 21:17  [ТС] 17
Цитата Сообщение от Vladimirys Посмотреть сообщение
Вы надеюсь туда - в OnCreate() "циклов и прочих потоков не напихали"?
Как раз в onCreate() и вызывается метод, который делает запросы в БД, который длится около секунды, но при повороте это заметно
0
10.08.2014, 21:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.08.2014, 21:17
Помогаю со студенческими работами здесь

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

Смена ориентации экрана перезапускает приложение
Создаю на своем мобильном приложении. На очередном этапе заметил, что смена ориентации экрана как...

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

Смена ориентации страниц на одну кнопку (openoffice)
Здравствуйте. Подскажите, можно ли как нить задать смену ориентации страниц на одну кнопку, а не...

Профессиональный рост и смена парадигмы проф. ориентации
Всем привет Хочу в этой теме затронуть такой казалось бы избитый вопрос как "образование для IT...

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru