В моем приложении у меня есть активность, воспроизводящая потоковое http-видео в ландшафтном режиме.
Мой AndroidManifest.xml:
Макет моего действия:
Проблема в том, что каждый раз, когда я закрываю это действие (нажав кнопку «Назад»), оно всегда переключается в портретный режим (время очень скоро, но вы действительно можете увидеть воздействие на реальное устройство перед возвратом к предыдущему действию) перед закрытием. Как я могу исправить эту досадную проблему?
Обновите с дополнительной информацией
Это раздражающее поведение происходило только в том случае, если предыдущее действие было в портретном режиме, если предыдущее было в альбомном, все в порядке. Мне кажется, что это как-то связано с фреймворком Android при постепенном появлении / исчезновении действий с разными настройками screenOrientation.
Обновление с указанием причины
После некоторого глубокого изучения API Google, я думаю, что нашел причину, вызывающую это раздражающее поведение, см. здесь :
Если вы не укажете иное, конфигурация изменение (например, изменение ориентации экрана, языка, устройств ввода и т. д.) приведет к уничтожению вашей текущей активности, проходя через обычный процесс жизненного цикла активности onPause (), onStop () и onDestroy () в зависимости от ситуации.Если действие было на переднем плане или было видимым для пользователя, после вызова onDestroy () в этом экземпляре будет создан новый экземпляр действия, с любым сохраненным экземпляром, созданным предыдущим экземпляром из onSaveInstanceState (Bundle).
Итак, что происходило за кулисами при нажатии кнопки «Назад»: действие currnet VideoView (альбомная ориентация) уничтожается, новое действие VideoView (вертикальное положение) создается из-за изменения конфигурации screenOrientation и сразу же удаляется (где вы можете увидеть эффекты на экране) отображается последняя активность в стеке. это также объясняет, почему это раздражающее поведение исчезло, если последнее действие имеет такие же настройки screenOrientation.
Я все еще пытаюсь понять, как обойти это восстановление активности из-за изменения конфигурации. Как указано в API, переопределение onConfigurationChanged (Configuration), однако, поскольку я явно определяю screenOrientation в xml, onConfigurationChanged () не вызывается, множество аналогичных SO обсуждалось ранее, например этот .
Пожалуйста, дайте ответ в правильном направлении.
Спасибо,
Д