В моем приложении активен просмотр потокового видео в режиме реального времени.
Мой AndroidManifest.xml:
<activity android:name=".MediaPlayerActivity"
android:label="@string/menu_player"
android:launchMode="singleInstance"
android:screenOrientation="landscape">
</activity>
Макет моей активности:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/black">
<VideoView android:id="@+id/myVideoView"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_gravity="center_horizontal"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"/>
</LinearLayout>
Проблема в том, что каждый раз, когда я закрываю это действие (нажав кнопку "Назад"), оно всегдаповерните в портретный режим (время очень скоро, но вы можете увидеть эффект на реальном устройстве, прежде чем вернуться к предыдущему действию) перед закрытием.Как я могу исправить эту раздражающую проблему?
Обновление с дополнительной информацией
Это раздражающее поведение произошло только в том случае, если предыдущее действие было в портретном режиме, если предыдущее - в альбомной ориентации, онопросто хорошо.Для меня это выглядит как что-то, связанное с платформой Android, когда появляются и исчезают действия с различными настройками экранной ориентации.
Обновление с указанием причины
После некоторого глубокого изучения API Google, я думаю, я нашел причину, которая вызывает это раздражающее поведение, проверьте здесь :
Если не указано иное, изменение конфигурации (например, изменение ориентации экрана, языка, устройств ввода и т. Д.) Приведет к разрушению вашей текущей активности, проходя обычный жизненный цикл активности onPause(), onStop () и onDestroy () в зависимости от ситуации.Если действие находилось на переднем плане или было видимым для пользователя, при вызове onDestroy () в этом экземпляре будет создан новый экземпляр действия, с каким бы параметром saveInstanceState был сгенерирован предыдущий экземпляр из onSaveInstanceState (Bundle).
Итак, что произошло за кулисами, когда нажата кнопка «Назад»: currnet Действия VideoView (ландшафт) разрушены, новое действие VideoView (портрет) создано из-за изменения конфигурации screenOrientation и немедленного уничтожения (там, где выможно увидеть эффекты на экране), отображается последняя активность в стеке.это также объясняет, почему это раздражающее поведение исчезло, если последнее действие имело те же настройки screenOrientation.
Я все еще пытаюсь выяснить, как обойти эту деятельность из-за изменения конфигурации.Как указано в API, переопределение onConfigurationChanged (Configuration), тем не менее, поскольку я явно определяю screenOrientation в xml, onConfigurationChanged () не вызывается, много подобных SO обсуждалось ранее, например, этот .
Пожалуйста, дайте ответ в правильном направлении.
Спасибо,
Y