Как правильно закрыть действие Landscape VideoView?

В моем приложении у меня есть активность, воспроизводящая потоковое 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 обсуждалось ранее, например этот .

Пожалуйста, дайте ответ в правильном направлении.

Спасибо,
Д

9
задан Community 23 May 2017 в 10:26
поделиться