Как включить автоповорот экрана на телефоне | Как настроить?

Всё о Интернете, сетях, компьютерах, Windows, iOS и Android

  • Главная
  • Карта сайта
  • Блог

Как включить автоповорот экрана на телефоне

На днях ко мне зашла знакомая с просьбой помочь ей включить автоповорот экрана на смартфоне. Она как-то его сумела отключить (случайно или нет), а потом включить вновь не смогла. Несмотря на то, что это совсем не проблема для большинства пользователей, пожилым людям и новичкам достаточно сложно разобраться. Именно для них я сделал эту инструкцию что делать, если не работает автоповорот экрана на телефонах Samsung, Xiaomi, iPhone и т.п. Надеюсь что она будет полезной!

Немного поясню сначала как это работает. За работу этой функции отвечает встроенный в аппарат гироскоп — специальное устройство, отслеживающее положение телефона в пространстве. Кстати, гироскоп очень неплохо «кушает» заряд аккумулятора и если у Вас слабая батарея, то его лучше отключать, когда он не нужен.

Автоповорот на телефоне с Android

Для примера я буду рассматривать смартфон под управлением Android 9. Здесь в обычном исполнении всё просто. Смахиваем по экрану сверху вниз, чтобы полностью открылась вся панель уведомлений.

Здесь, среди прочих значков, будет и кнопка, позволяющая включить и отключить автоповорот в виде телефона и круглых стрелочек. В англоязычной версии интерфейса она называется Auto-rotate . Значок активен — гироскоп включен, значок серый — функция выключена. Всё просто!

Если вдруг в панели уведомлений значок скрыт, то можно зайти в настройки смартфона и открыть раздел «Экран»:

Внизу списка опций должен быть переключатель Автоповорот экрана, который соответственно включает и выключает данную функцию.

Особенности телефонов Xiaomi

Несмотря на то, что основной для программного обеспечения телефонов Xiaomi так же является операционная система Android, тем не менее интерфейс MIUI имеет достаточно много отличий. Одно из таких это автоблокировка экрана. Значок этой функции так же есть в панели уведомлений и называется он Ориентация:

Вот только работает он немного иначе, его трудолюбивые китайцы «слизали» с Айфона. Здесь, если Вы активируете значок, то заблокируете работу гироскопа и экран не будет поворачиваться. То есть включение опции «Ориентация» помогает отключить автоматический поворот изображения на экране Xiaomi.

Соответственно, если опцию отключить, то гироскоп снова будет активен и автоматический поворот экрана при изменении положения телефона в пространстве снова заработает!

Поворот экрана на Айфоне

На яблочных смартфонах Apple производитель пошёл от обратного. По умолчанию автоповорот на iPhone включен. При этом никакой индикации нет. А механизм у функции следующий.
Открываем Пункт управления Айфоном, смахнув по экрану от нижнего края экрана вверх.

Здесь будет значок в виде замочка в кружке. Нажатие на него позволит отключить автоповорот экрана телефона. В верхней части экрана появится соответствующий значок:

Гироскоп выключен и смартфон не реагирует на изменение положения. Чтобы снова включить поворот экрана, вызовите Центр управления iPhone и снова нажмите на значок с замочком.

Функция снова активируется и рабочий стол телефона снова будет поворачиваться при вращении телефона в пространстве.

Примечание: Если у вас на Phone+ не работает автоматический поворот экрана, то причиной скорее всего служит режим отображения иконок на домашнем экране — он может быть увеличенным, а должен быть стандартным. Чтобы это исправить, зайдите в настройки смартфона и откройте раздел «Экран и яркость». Там будет пункт Вид, в котором надо выбрать значение Стандартно. После этого функция снова заработает.

Не работает автоповорот экрана на Андроиде

Если вы не успеваете прийти домой, чтобы посмотреть финал кубка страны по футболу или любимый сериал, это можно сделать на мобильном телефоне. Для просмотра видео на гаджете предусмотрена горизонтальная ориентация. А что делать, если не работает по какой-то причине автоповорот экрана на вашем устройстве Андроид — читайте в нашей статье.

  • Каким образом работает автоповорот в Android
  • Что делать, если не поворачивается экран автоматически
  • Почему не работает автоповорот на планшете Андроид
  • Сброс настроек на мобильном телефоне
  • Перепрошивка смартфона Андроид
  • Программа для смены ориентации экрана в Android

Каким образом работает автоповорот в Android

В современных мобильных устройствах за поворот экрана отвечает специальный чип — акселерометр. Благодаря нехитрому приспособлению системе удаётся узнать ориентацию корпуса телефона и автоматически регулировать экран . Его структура такова, что работает он только в Земной атмосфере . Это значит, что в вакууме автоповорот на планшетах и мобильных телефонах работать не будет.

Проблемы с автоматической перестройкой ориентации скрина могут появляться на разных брендах и моделях телефонов. Иногда — это временные баги, но в некоторых случаях проблема может быть серьёзней. В таких случаях нам ничего не остаётся, как отдать устройство в ремонт. Но прежде нужно попытаться устранить проблему самостоятельно на Андроиде.

Что делать, если не поворачивается экран автоматически

Попробуйте решить проблему с автоповоротом. Закройте все приложения и игры, которые были вами запущены. И выключите мобильный телефон на 10-20 минут. Затем включите его, и снова проверьте, возможно сбой удалось устранить таким простым способом.

Убедитесь, что функция включена в настройках :

  1. Большинство устройство с Android настройки автоповорота хранят в панели быстрого доступа. Опустите шторку;
  2. Кнопка для включения нужной нам функции может находится на разных панелях. Если вы не можете найти кнопку на открытой панели, попробуйте свайпом (влево или вправо) сдвинуть кнопки;

Если здесь кнопка была выключена, значит вам удастся активировать функцию. И, таким образом, решить проблему с автоматическим поворотом в своём мобильном устройстве. В последних моделях телефонов эта функция может иметь другое название. Например, в популярном Samsung Galaxy S10, если поворот дисплея выключен, то кнопка так и называется — « Автоповорот ».

Но стоит её активировать, она почему-то переименовывается в « Книжный экран ».

Стоит нажать её ещё раз — и кнопка снова называется по-прежнему.

Почему не работает автоповорот на планшете Андроид

Проблемы с автоповоротом встречаются на разных устройствах, в том числе на планшетах. Убедитесь, что в настройках эта функция включена.

  1. Выберите на главном экране кнопку « Настройки »;
  2. Выберите пункт под названием « Экран »;

Если функция уже была включена ранее, но планшет всё равно не поворачивает картинку автоматически, попробуйте также выключить устройство. И достать аккумулятор из корпуса, если позволяет это сделать конструкция. Пользователям, чьи устройства подвергались физическим воздействиям (устройство падало на пол со значительной высоты, было ударено и т.д.) можно посоветовать обратиться в технический сервис. Так как вероятно вышел из строя тот самый акселерометр. Если проблема основана на программном уровне, у нас есть шанс вернуть работоспособность разворота экрана.

Сброс настроек на мобильном телефоне

Большинство программных проблем на мобильных устройствах пользователей можно решить при помощи возврата настроек к состоянию заводских. Тем самым мы можем устранить вредные программные ошибки, мусор и прочее. Настройки можно сбросить разными способами. Но устройство нужно подготовить к этому процессу. Позаботьтесь о своих личных данных. Сделайте резервную копию, чтобы быстро их восстановить. Так как память телефона, у которого не поворачивается экран, будет полностью стёрта .

Но самым главным является ваш аккаунт Google. Вы должны знать логин и пароль от профиля, чтобы быстро авторизоваться в новой системе. Если вы не помните пароль или любые другие данные от своего Гугл аккаунта, то не сможете войти в телефон после сброса. В таком случае нужно удалить свой аккаунт из устройства. А после сброса создать новый для того, чтобы войти в систему Андроид.

Когда всё будет готово, приступаем к устранению проблемы, когда не работает автоповорот дисплея в Android:

  1. Выключите телефон;
  2. Когда устройство полностью выключится, нажмите и удерживайте клавиши уменьшения громкости и питания до характерного признака (вибрации или появления меню). Кнопки для входа в меню Recovery для своего устройства вы сможете найти в инструкции, которая находилась в комплекте;
  3. В особом меню не работает сенсорный ввод. Перемещаться по меню можно при помощи клавиш регулировки громкости. А выбор можно сделать кнопкой питания;
  4. Найдите строку « Wipe Data/Factory Reset » и выберите её;

Теперь устройство начнёт процесс восстановления данных. Он не займёт много времени. Вам нужно будет войти в свой аккаунт Google и произвести некоторые настройки устройства. Теперь включите, а затем проверьте автоповорт в телефоне или планшете с Android.

Перепрошивка смартфона Андроид

Если вы приобрели устройство, но позже заметили, что в нём не работает автоматическая смена ориентации экрана — вы можете вернуть его по гарантии . В остальных случаях телефон можно перепрошить и установить ту прошивку, в которой поворот будет работать. Все соответствующие приложения, драйвера и программы можно взять на этом сайте.

Выберите свою модель в списке и найдите подходящую прошивку. Обычно, в этой же теме можно найти и инструменты, которые необходимы для этого процесса.

Программа для смены ориентации экрана в Android

Если ни один из описанных выше способов не помог решить проблему с автоповоротом, вы всё равно сможете пользоваться этой замечательной функцией. Ведь есть сторонние программы, которые меняют ориентацию даже без встроенного акселерометра.

Приложение должно помочь решить проблему в любом случае.

Приложение Rotation Control позволяет не только менять расположение экрана.

Возможности приложения: Пояснение:
Сопряжение с другими программами. Может блокировать смену ориентации экрана другими приложениями.
Поддержка любой ориентации. Приложение позволяет также создавать портретную ориентацию.
Защита устройства. Есть режим защиты устройства от влияния сторонних приложений на параметры.

Мобильное приложение не займёт много пространства в памяти, оно вести всего 1 мегабайт. После установки оно будет доступно из панели быстрого доступа. При вызове меню программы, в нём доступны сразу все функции: портретная ориентация, альбомная, пейзажная и другие. Чтобы активировать любую из них, нужно всего лишь нажать на соответствующую кнопку.

Если это приложение не подойдёт, скачайте в Play Market любое другое из этой категории. У вас будет огромный выбор. Введите в поисковой строке «ориентация экрана» и найдите подходящее из списка. В особых случаях автоповорот экрана в Андроид устройствах может не работать даже при установке приложений. Таким образом ничего не остаётся, как отправиться в сервис. В смартфоне нарушено устройство, которое отвечает за поворот. И справиться с этой проблемой сможет только специалист.

Как включить или выключить поворот экрана на Андроид

Автоматический поворот экрана — функция, присущая большинству устройств на Андроид. Есть большое количество пользователей, которые не представляют работы со смартфоном или планшетом без этой функции, но есть и те, кто её не любит и сразу же отключает на своём гаджете.

Как бы то ни было, стоит знать, как включать или запретить поворот экрана Андроид разными способами. Давайте детальнее остановимся на том, как пользоваться этой функцией, и взвесим все за и против этого инструмента системы.

Несмотря на все плюсы автоповорота экрана, иногда эта функция может мешать пользователю

Стоит ли активировать автоповорот экрана?

Автоматический поворот экрана удобен тем, что вы можете в любой момент перевернуть планшет или телефон, и картинка сразу же примет необходимое положение. Это актуально при просмотре видео, фотографий, для игр и набора текста, когда хочется, чтобы клавиши были большего размера.

С другой стороны, в некоторых ситуациях он срабатывает в ненужный момент — к примеру, если вы повернулись, а датчик в устройстве Android распознал это как призыв поменять ориентацию дисплея. Для тех, кто любит читать лёжа, пользование гаджетом в таком положении становится целым испытанием, ведь практически всегда функция срабатывает не тогда, когда нужно.

Пользоваться планшетом или смартфоном лежа на боку, с включенной функцией поворота вообще не представляется возможным, из-за чего пользователи предпочитают полностью её отключать.

Как на Андроиде настроить поворот экрана?

Чтобы найти меню управления функцией, следуйте таким указаниям:

  1. Откройте меню устройства, зайдите в раздел «Настройки».
  2. Воспользуйтесь вкладкой «Специальные возможности».
  3. В списке вы найдёте строку «Автоповорот экрана» — чтобы включить её, поставьте галочку, для отключения же уберите её.

Есть ещё несколько способов настройки. К примеру, отдельная клавиша для активации или отключения есть в шторке, которая отодвигается сверху дисплея — речь идёт о быстром меню, где расположены кнопки Wi-Fi, Bluetooth и прочих модулей.

Специальная клавиша есть и в виджете энергосбережения — так вы сможете ещё быстрее активировать или запретить поворот экрана Android, не заходя в настройки.

Дополнительные возможности

Есть и отдельная программа для поворота экрана Андроид — Smart Rotator. Для чего она нужна? Приложение создано для более тонкой настройки этого инструмента. Суть заключается в том, что она сканирует систему и составляет список установленных сервисов. Далее, вы просто отмечаете все приложения, где требуется работа автоматического поворота, а в остальных случаях он будет отключён.

Получается, что это такая себе золотая середина между тем, чтобы функция не включалась, когда не нужно, но активировалась в отдельных приложениях, где без неё не обойтись.

Отметим только одно — не зря она есть в виджете энергосбережения, ведь использование автоповорота требует определённых затрат энергии, поэтому её и поместили в это меню. Если вы стремитесь растянуть время работы устройства Android, вам лучше не пользоваться этой функцией, и уж тем более вам не нужны специальные программы — они только увеличат потребление ресурсов аккумулятора.

Можно сделать вывод, что пользование автоматическим поворотом на Андроид — индивидуальный выбор каждого пользователя, ведь она удобна для многих, но некоторым приносит только дискомфорт. Как бы то ни было, теперь вы знаете больше об этой возможности дисплея, сможете быстро включить или отключить её несколькими способами.

Что делать, если не работает автоповорот экрана на Андроид смартфоне

Смотришь в книгу – видишь… альбом. Или наоборот: смотришь в альбом – видишь книгу. Нет, с реальными альбомами и книгами такого не происходит, а с мобильными устройствами – вполне. В норме экран смартфона и планшета автоматически переключается в горизонтальный или вертикальный вид вслед за поворотом девайса. Но бывает, что он застывает в одном положении и не меняет его, как ни крути.

Поговорим, почему не работает автоповорот экрана на Андроид и как устранить неполадку.

Было или стало? Причины, связанные с железом

За автоматический поворот изображения на экране мобильного гаджета отвечает акселерометр – гиродатчик, который измеряет угол наклона аппарата относительно направления силы гравитации Земли. Это недорогое, широко распространённое устройство установлено в абсолютное большинство смартфонов и планшетов. Однако в большинство – не значит во все.

До сих пор можно встретить аппараты, в которых нет акселерометра. Это, как правило, ультрабюджетные девайсы малоизвестных брендов из Поднебесной, и если «напасть одолела» один из их представителей прямо с момента покупки, в первую очередь следует выяснить, а «был ли мальчик».

Для проверки наличия акселерометра в телефоне подойдет любое приложение для диагностики железа Android-устройств, например, Sensor Kinetics. Оно отображает информацию о работе датчиков.

Если в разделе «Акселерометр» написано «Отсутствует на данном устройстве», значит, это тот самый случай. Заставить экран такого девайса поворачиваться вслед за изменением положения, увы, не получится, но это можно компенсировать с помощью сторонних программ. Речь о них пойдет дальше.

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

Все остальные случаи мы отнесем к категории «не было, но стало», то есть изначально на устройстве автоповорот работал, но перестал по неизвестным причинам.

Причины, связанные с софтом

В случаях, когда ранее работавший автоповорот экрана отказал без видимых причин, тоже может быть виновато железо. Например, из-за заводского брака или старения устройства (чувствительность гиродатчика со временем уменьшается). Однако 90-95% таких ситуаций связано с программным обеспечением.

  • с отключением функции автоповорота в настройках аппарата;
  • с системной ошибкой;
  • с конфликтом или некорректной работой приложений;
  • с действием вредоносных программ.

Самая частая причина

Самая распространенная и легкоустранимая причина сбоя – случайное отключение автоповорота в настройках.

Большинство мобильных девайсов на базе «голого» Андроида или фирменных оболочек имеют кнопку управления автоповоротом в панели уведомлений и быстрого доступа (шторке). Правда, название этой кнопки не всегда точно передает ее назначение. Так, на MIUI 11 и 10 она называется «Ориентация», что сбивает с толку владельцев Xiaomi Redmi 4, 5 и новее:

На ранних версиях MIUI эта кнопка называлась просто «Поворот» или «Автоповорот», как, впрочем, она называется сейчас на многих других устройствах, например, на Samsung, Honor, Meizu, Asus Zen и т. д.

При отключении функции автоповорота название кнопки зачастую меняется на «Вертикальная (горизонтальная) ориентация» или «Книжный (альбомный) экран», что тоже иногда путает пользователей:

Чтобы восстановить автоматический поворот, отключенный этой кнопкой, достаточно коснуться ее еще раз.

Помимо панели быстрого доступа, средства управления автоповоротом дисплея есть в системных настройках. Одна из опций находится в разделе «Экран». Она позволяет выбрать действие при повороте устройства – поворачивать изображение или сохранять ориентацию по умолчанию.

Другая спрятана в «Специальных возможностях». Она, как и кнопка «за шторкой», просто активирует или деактивирует автоповорот.

Некоторые модели устройств позволяют включать и отключать автоматический поворот отдельно на главном экране и на экране голосовых вызовов. Управление этой функцией производится через панель быстрого доступа.

Ошибки системы, вирусы, некорректная работа приложений

Системные ошибки бывают временными и постоянными. Первые – это те, которые связаны с текущим выполнением процессов и служб операционной системы и «живут» не дольше одного сеанса. Вторые связаны с изменениями в системных файлах и настройках.

Ошибки первой группы легко устраняются перезапуском устройства, а второй – только устранением причины, которая вызвала сбой.

Временные ошибки возникают спонтанно на любых устройствах зачастую без видимых причин. Постоянные – чаще следствие каких-либо явных событий, например, операций с системными файлами на смартфонах и планшетах с root, установки обновлений и т. д.

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

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

  • Выскакивающей рекламе, не связанной с какой-либо программой.
  • Тревожными сообщениями антивируса.
  • Самопроизвольным удалением защитных приложений.
  • Появлением новых приложений, которые вы не устанавливали.
  • Кражей аккаунтов в мессенджерах и соцсетях, пропаданием денег из электронных кошельков, которыми вы пользуетесь на устройстве и т. п.

Другие симптомы присутствия вирусов на мобильном девайсе и методы борьбы с ними описаны в этой статье.

При конфликте или сбое в работе приложений чаще всего прослеживается связь появления неполадки с установкой или запуском какой-либо программы, в том числе не использующей гиродатчик. Например, на корректную работу кнопки автоповорота в панели быстрого доступа может влиять сторонний лаунчер или приложение, изменяющее дизайн шторки.

Как восстановить функцию автоповорота экрана при сбоях системы и программ

Если предыдущее действие не помогло, переходите к следующему.

  • Перезагрузите аппарат. Это устранит временные ошибки системы.
  • Удалите приложения, которые вы установили незадолго до возникновения проблемы.
  • Просканируйте устройство на вирусы.
  • Сбросьте настройки Android к заводскому состоянию.

Если поворот экрана перестал работать после манипуляций с системными файлами на аппаратах с root, откат к заводским настройкам не поможет. При отсутствии возможности исправить то, что было изменено, вручную, спасет только перепрошивка.

Приложения для управления поворотами дисплея и калибровки акселерометра

Если вам так и не удалось восстановить встроенную функцию автоповорота либо если на вашем устройстве отсутствует или не работает акселерометр, компенсировать этот недостаток поможет стороннее приложение. С его помощью вы сможете управлять поворотом экрана в автоматическом и ручном режиме, а также блокировать экран в нужном положении.

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

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

Вот неполный список бесплатных приложений для управления поворотом экрана на Андроиде:

Встречаются устройства, на которых функция автоповорота экрана вроде работает, а вроде и нет. Точнее, она срабатывает через раз или не тогда, когда нужно. Подобное происходит при нарушении калибровки гиродатчика, которое на многих смартфонах и планшетах возникает с возрастом, а также в результате падений или частого воздействия вибрации.

Восстановить калибровку довольно просто – для этого есть бесплатное приложение Accelerometer Calibration Free. Оно сбрасывает старые параметры акселерометра и устанавливает новые. После этого точность определения положения аппарата заметно повышается.

Accelerometer Calibration Free всё делает автоматически. Вам лишь нужно сориентировать гаджет в пространстве так, чтобы красная точка оказалась в центре экрана.

Затем нажать кнопку «Calibrate» и после окончания операции перезагрузить систему. Теперь, если гиродатчик исправен, функция автоповорота заработает как надо.

Кстати, если держать Accelerometer Calibration Free запущенным постоянно, он будет следить за работой акселерометра и уведомит вас, если потребность в калибровке возникнет снова. Это удобно, просто, а главное — эффективно. Теперь функция автоповорота под надежным контролем.

Повороты экрана в Android без боли

Важно!
Изначально в статье была реализация с ошибкой. Ошибку исправил, статью немного поправил.

Предисловие

Истинное понимание проблем каждой платформы приходит после того, как попробуешь писать под другую платформу / на другом языке. И вот как раз после того, как я познакомился с разработкой под iOS, я задумался над тем, насколько ужасна реализация поворотов экрана в Android. С того момента я думал над решением данной проблемы. Попутно я начал использовать реактивное программирование везде, где только можно и уже даже не представляю как писать приложения по-другому.

И вот я узнал про последнюю недостающую деталь — Data Binding. Как-то эта библиотека прошла мимо меня в свое время, да и все статьи, что я читал (что на русском, что на английском) рассказывали не совсем про то, что мне было необходимо. И вот сейчас я хочу рассказать про реализацию приложения, когда можно будет забыть про повороты экранов вообще, все данные будут сохраняться без нашего прямого вмешательства для каждого активити.

Когда начались проблемы?

По настоящему остро я почувствовал проблему, когда в одном проекте у меня получился экран на 1500 строк xml, по дизайну и ТЗ там было целая куча различных полей, которые становились видимыми при разных условиях. Получилось 15 различных layout’ов, каждый из которых мог быть видимым или нет. Плюс к этому была еще куча различных объектов, значения которых влияют на вьюху. Можете представить уровень проблем в момент поворота экрана.

Возможное решение

Сразу оговорюсь, я против фанатичного следования заветам какого-либо подхода, я пытаюсь делать универсальные и надежные решения, несмотря на то, как это смотрится с точки зрения какого-либо паттерна.

Я назову это реактивным MVVM. Абсолютно любой экран можно представить в виде объекта: TextView — параметр String, видимость объекта или ProgressBar’а — параметр Boolean и т.д… А так же абсолютно любое действие можно представить в виде Observable: нажатие кнопки, ввод текста в EditText и т.п…

Вот тут я советую остановиться и прочитать несколько статей про Data Binding, если еще не знакомы с этой библиотекой, благо, на хабре их полно.

Да начнется магия

Перед тем как начать создавать нашу активити, создадим базовые классы для активити и ViewModel’ли, где и будет происходить вся магия.

Update!
После общения в комментариях, осознал свою ошибку. Суть в том, что в моей первой реализации ничего не сериализуется, но все работает при поворотах экрана, да даже при сворачивании, разворачивании экрана. В комментариях ниже обязательно почитайте почему так происходит. Ну а я исправлю код и поправлю комментарии к нему.

Для начала, напишем базовую ViewModel:

Я уже говорил, что все что угодно можно представить как Observable? И библиотека RxBinding отлично это делает, но вот беда, мы работает не напрямую с объектами, типа EditText, а с параметрами типа ObservableField. Что бы радоваться жизни и дальше, нам необходимо написать функцию, которая будет делать из ObservableField необходимый нам Observable RxJava2:

Тут все просто, передаем на вход ObservableField и получаем Observable RxJava2. Именно для этого мы наследуем базовый класс от BaseObservable. Добавим этот метод в наш базовый класс.

Теперь напишем базовый класс для активити:

Я постарался подробно прокомментировать код, но заострю внимание на нескольких вещах.
Активити, при повороте экрана всегда уничтожается. Тогда, при восстановлении снова вызывается метод onCreate. Вот как раз в методе onCreate нам и нужно восстанавливать данные, предварительно проверив, сохраняли ли мы какие-либо данные. Сохранение данных происходит в методе onSaveInstanceState.

При повороте экрана нас интересует порядок вызовов методов, а он такой (то, что интересует нас):

1) onDestroy
2) onSaveInstanceState

Что бы не сохранять уже не нужные данные мы добавили проверку:

Дело в том, что метод isFinishing вернет true только если мы явно вызвали метод finish() в активити, либо же ОС сама уничтожила активити из-за нехватки памяти. В этих случаях нам нет необходимости сохранять данные.

Реализация приложения

Представим условную задачу: нам необходимо сделать экран, где будет 1 EditText, 1 TextView и 1 кнопка. Кнопка не должна быть кликабельной до тех пор, пока пользователь не введет в EditText цифру 7. Сама же кнопка будет считать количество нажатий на нее, отображая их через TextView.

Update!
Пишем нашу ViewModel:

Update
Вот тут и и были самые большие проблемы. Все работало и при старой реализации, ровно до того момента, пока в настройках разработчика не включить параметр «Don’t keep activities».

Что бы все работало как надо, необходимо реализовывать интерфейс Parcelable для ViewModel. По поводу реализации ничего писать не буду, только уточню еще 1 момент:

Данные-то мы возвращаем, а вот Observable мы теряем. Поэтому пришлось выводить в отдельный метод и вызывать его во всех конструкторах. Это очень быстрое решение проблемы, не было времени подумать лучше, нужно было было указать на ошибку. Если у кого-то есть идеи как реализовать это лучше, пожалуйста, поделитесь.

Теперь напишем для этой модели view:

Ну и теперь, мы пишем нашу активити:

Запускаем приложение. Кнопка не кликабельна, счетчик показывает 0. Вводим цифру 7, вертим телефон как хотим, через 2 секунды, в любом случае кнопка становится активной, тыкаем на кнопку и счетчик растет. Стираем цифру, вертим телефоном снова — кнопка все равно через 2 секунды будет не кликабельна, а счетчик не сбросится.

Все, мы получили реализацию безболезненного поворота экрана без потери данных. При этом будут сохранены не только ObservableField и тому подобные, но так же и объекты, массивы и простые параметры, типа int.

Adblock
detector