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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 5.00
dollar8
13 / 13 / 3
Регистрация: 25.09.2011
Сообщений: 84
#1

SurfaceView при изменении ориентации экрана перегружается - Программирование Android

13.02.2012, 18:33. Просмотров 3708. Ответов 5
Метки нет (Все метки)

при создании тетриса возник вопрос.
один из моих классов расширяет класс SurfaceView

Java
1
public class TetrisView extends SurfaceView
так вот. при изменении ориентации экрана этот класс (TetrisView) полностью перезагружается.
Для меня это критично. т.к. я теряю поток и заново вызывается конструктор TetrisView - т.е. игра начинается заново.

(в манифесте у меня стоит android:screenOrientation="portrait" )

сделать данные static можно, но если ли какой либо способ вообще выключить некий слушатель поворота экрана?

и почему это вообще происходит?

Заранее спасибо за ответ.

Добавлено через 17 минут
Хочу дополнить. что
изменение экрана слышит стартовое Активити. вот оно убивается и запускается сначала (собсветнно что на developer.android.com и написано)
так же там написано чтобы залочить экран нужно повозиться с Манифестом (добавить android:configChanges="orientation")
и метод добавить в стартовое активити
Java
1
2
3
4
@Override
    public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    }
но что нужно написать в этом методе, чтобы не пересоздавалось Активити?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2012, 18:33     SurfaceView при изменении ориентации экрана перегружается
Посмотрите здесь:

Выбрасывает из приложения при смене ориентации экрана - Программирование Android
Здравствуйте. Следующая проблема. Создал папку layout-land в папке res. И при добавлении туда вот этого файла xml: <LinearLayout...

Задний фон при смене ориентации экрана - Программирование Android
Здравствуйте! Мне надо чтобы фон не сжимался так, а как в HTML оптимизировал под размер экрана... Заранее спасибо! (Приложение и картинка...

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

При смене ориентации экрана накладываются фрагменты - Программирование Android
Юзаю Android.Support.V4.App.Fragment, вроде бы все нормально. При переключении из меню фрагменты скрываю отправляя в "стек" а кликнутый...

Не отображать SplashScreen при смене ориентации экрана - Программирование Android
Не могу понять как сделать чтобы сплэш не появлялся снова при смене ориентации экрана? + подскажите, почему при горизонтальной...

При любой ориентации экрана табы были всегда под ActionBar - Программирование Android
Уважаемые программисты! Подскажите, пожалуйста как можно сделать так, чтобы табы были всегда под ActionBar? Есть Activity с ActionBar в...

Изменение ориентации экрана - Программирование Android
здравствуйте. возник вопрос,допустим я программно запретил изменения экрана ...

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

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

Запретить смену ориентации экрана - Программирование Android
имеется проблема в большом весе приложения и нежелании делать отдельные фоны для активити для горизонтальной ориентации. Как сделать чтобы...

Поведение после смены ориентации экрана - Программирование Android
Доброго времени суток. У меня есть 2 xml layout файла для вертикальной и горизонтальной ориентации дисплея c тем самим набором елементов....

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bes-s
30 / 30 / 2
Регистрация: 05.11.2011
Сообщений: 178
13.02.2012, 20:56     SurfaceView при изменении ориентации экрана перегружается #2
при смене ориентации последовательно происходят onPause() onResume(). поэтому советую на onPause() сохранять состояние тетриса, а на onResume() его возобновлять. либо запретить смену ориентации экрана.
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
13.02.2012, 21:07     SurfaceView при изменении ориентации экрана перегружается #3
в манифест, в самом коде ничего не надо писать.
XML
1
android:configChanges="keyboardHidden|orientation"
при этом ориентация экрана меняться будет, но не будет пересоздаваться по новой активити, но это "не очень" хороший метод))

лучше пользоваться по возможности savedInstanceState.
или же если вам не нужно что бы менялась ориентация экрана можно в onCreate() написать следующее .
Java
1
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
dollar8
13 / 13 / 3
Регистрация: 25.09.2011
Сообщений: 84
14.02.2012, 00:47  [ТС]     SurfaceView при изменении ориентации экрана перегружается #4
Цитата Сообщение от NiRamz Посмотреть сообщение
в манифест, в самом коде ничего не надо писать.
XML
1
android:configChanges="keyboardHidden|orientation"
при этом ориентация экрана меняться будет, но не будет пересоздаваться по новой активити, но это "не очень" хороший метод))

лучше пользоваться по возможности savedInstanceState.
или же если вам не нужно что бы менялась ориентация экрана можно в onCreate() написать следующее .
Java
1
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
как я понял
или в манифесте прописать.
Java
1
           android:screenOrientation="portrait"
или в onCreate()
Java
1
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
разницы вроде никакой (впрочем так и написано на девелоперс.андроид.ком)
и при повороте эмулятора (с девайсом без физ.клавы все ОК) Активити-таки финиширует и стартует заново, т.е. не то что нужно.

а вот при
XML
1
android:configChanges="keyboardHidden|orientation"
все работает на Ура

а что значит "не очень" хороший метод? почему в классе лучше писать св-ва экрана нежели , чем в манифесте?

Добавлено через 3 минуты
Цитата Сообщение от Bes-s Посмотреть сообщение
при смене ориентации последовательно происходят onPause() onResume(). поэтому советую на onPause() сохранять состояние тетриса, а на onResume() его возобновлять. либо запретить смену ориентации экрана.
ну вот и думаем как запретить смену ориентации. но походу в уже решили.
а точно onPause onResume ? разве не onFinish onCreate ? ибо у меня вроде бы Create вызывается при повороте экрана.
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
14.02.2012, 01:04     SurfaceView при изменении ориентации экрана перегружается #5
Цитата Сообщение от dollar8 Посмотреть сообщение
а точно onPause onResume ? разве не onFinish onCreate ?
вызывается полный цикл. то есть onPause, onStop, onDestroy после чего onStart, onCreate. это легко проверить, переопределив эти методы и выводя значения в logCat.


Цитата Сообщение от dollar8 Посмотреть сообщение
разницы вроде никакой
да, разницы не какой. Просто сам пишу в коде.


Цитата Сообщение от dollar8 Посмотреть сообщение
а что значит "не очень" хороший метод?
при такой блокировке придется в ручную обрабатывать изменение конфигурации устройства.
лучше всего использовать savedInstanceState.

еще как варинат можно использовать для сохранения
Java
1
onRetainNonConfigurationInstance
а в onCreate для восстановления
Java
1
getLastNonConfigurationInstance
dollar8
13 / 13 / 3
Регистрация: 25.09.2011
Сообщений: 84
14.02.2012, 11:47  [ТС]     SurfaceView при изменении ориентации экрана перегружается #6
Цитата Сообщение от NiRamz Посмотреть сообщение
при такой блокировке придется в ручную обрабатывать изменение конфигурации устройства.
почему придется обрабатываеть?
при наличии атрибута в активити в манифесте android:configChanges="keyboardHidden|orientation"
телефон вообще не реагирует на изменение ориентации экрана.
Yandex
Объявления
14.02.2012, 11:47     SurfaceView при изменении ориентации экрана перегружается
Ответ Создать тему
Опции темы

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