Как предотвратить автоматическое обновление WebView при повороте экрана

Мое приложение - активность с WebView была автоматически обновлена при повороте экрана, и моя активность вернулась к первому 1.

Пример: WebView обрабатывает 3 действия (A, B, C), когда я переключаюсь с A-> B или B-C, затем он возвращается к A, когда экран вращается.

Мой вопрос: как мы можем поддерживать активность при повороте экрана события?

Ответы на вопрос(3)

Решение Вопроса

orientation|screenSize к вашему манифесту, если ваш API> 3.2, в некоторых случаях он не будет работать без него.

 Eric Cochran26 февр. 2015 г., 03:34
Нет, нет, нет. Пожалуйста, позвольте вашей конфигурации обновляться, когда это необходимо.
 Eric Cochran16 июн. 2015 г., 23:16
@ cgomezmendez Всегда разрешайте вашим представлениям восстанавливать свое состояние. Да, в этом случае WebView не имеет состояния для сохранения и восстановления, но является ли WebView единственной частью состояния экземпляра вашей Activity? Почти наверняка нет.
 Cristian Gomez16 июн. 2015 г., 20:54
@ NightlyNexus, каковы могут быть последствия этого в веб-просмотре?

android:configChanges="orientation" в файл манифеста, чтобы предотвратить перезапуск при изменении ориентации экрана.

нравится:

   <activity android:name=".MyActivity"     
    android:configChanges="orientation|screenSize"  
    android:label="@string/app_name">

Видетьэт для некоторых ссылок.

 Eight07 июн. 2012 г., 04:04
@ SopheakVirak рад помочь вам.
 SopheakVirak07 июн. 2012 г., 03:38
Уважаемый Abhina8, спасибо большое .. это действительно здорово .. Я проверил, это работает очень хорошо для меня:).
 kirgy06 дек. 2013 г., 00:09
Примечание для Android 3.2+ (API 13) - начиная с этой версии поворот экрана также вызывает изменение размера экрана, что обновит пользовательский интерфейс. Вам нужно объявить «ориентация | screenSize» вместо просто «ориентация». Это все в вышеупомянутой статье Android, предложенной @MH. Developer.android.com / руководство / темы / ресурсы / ...

Самый простой выход - добавитьandroid:configChanges="orientation|screenSize" соответствующемуActivity в вашем манифесте. Устанавливая этот флаг, вы говорите Android не уничтожатьActivity и что вы будете самостоятельно обрабатывать все изменения ориентации (если они есть).

Более современным подходом было бы поставитьWebView внутриFragment и заставьте его сохранить свой экземпляр, используяsetRetainInstance(true) флаг. ХостингActivity будет по-прежнему разрушаться при изменении ориентации, ноFragment содержащийWebView будет просто отсоединен и повторно присоединен без необходимости повторного создания самого себя. Ты можешь найтиприме этой функции в демоверсиях API. Имейте в виду, что библиотека поддержки предлагает предварительно фрагментированную реализацию фрагментов, поэтому не обманывайте себя уровнем API «обычного» Fragment учебный класс

 Pinkerton15 мар. 2016 г., 20:21
@ mkuench Вы делаете очень важный момент и предоставляете отличный источник. Вы заслуживаете больше голосов, чем получили. Благодарность
 zackygaurav31 июл. 2015 г., 00:07
Ты жжешь. Это лучшее решение на сегодняшний день.
 mkuech05 июн. 2013 г., 17:57
Но вам не нужно использоватьFragment чтобы сохранитьWebViewостояние @ Вы можете просто использовать стандартные методы управления состоянием изActivity илиFragment если это все, что тебе нужно.setRetainInstance(true) необычн нужен для этого простого варианта использования. Оно больше всего заменяетonRetainNonConfigurationInstance, и полезно для таких вещей, как сохранениеThread активен при изменениях конфигурации. Я бы избегал усложнять вещи. Кроме того, поскольку просто сохраняяWebViewостояние @ не будет препятствовать перерисовке / перезагрузке, первое решение - единственный реальный способ сохранить его плавным при вращении.
 MH.05 июн. 2013 г., 02:35
@ mkuech: последнее относится к любому представлению, а не только кWebViews - вот почему вы всегда будете заново раздувать представления на уровне фрагментов вonCreateView() илиonActivityCreated(). Я не вдавался в подробности в моем ответе выше, но сsetRetainInstance(true) ты можешь сделать "старый"WebView сохранить его состояние в связке и восстановить его впоследствии. Это означает, чтоWebView придется перестраивать свой контент (читай: перезагружать URL), поэтому визуально он не такой быстрый / плавный, как обработкаActivityонфигурация @ изменяется вручную.
 mkuech29 мая 2013 г., 18:33
Ваш первый «самый простой» способ сделать это - единственный способ. «Более современный подход» не будет работать в этом случае (хорошо, он будет работать, но он будет пропускать память), потому что WebView привязан к контексту Activity при создании экземпляра. Проверять, выписываться Дайан Хэкборн комментирует это.

Ваш ответ на вопрос