Использование android:configChanges="direction|screenSize"/> И это портит мой ландшафтный макет при изменении ориентации
Когда я положил в
activity android:name=".MainActivity"
android:configChanges="orientation|screenSize"
и делать это для каждого из моих действий, расположение, когда я переворачиваю ориентацию в эмуляторе, не соответствует тому, как я сделал это в режиме дизайна.
Раньше, когда у меня не было configChanges, он работал бы просто идеально, за исключением того, что если бы я воспроизводил звук, он продолжал бы воспроизводиться, и у меня не было бы способа приостановить воспроизведение звука, который воспроизводился при первом его запуске.
Как сохранить макет таким же, как я его разработал в своей альбомной деятельности, когда я запускаю эмулятор, и в то же время иметь возможность использовать configChanges, чтобы состояние объекта оставалось прежним?
Вот как выглядит мой код в моем Manifest.xml
файл для configChanges:
<activity android:name=".MainActivity"
android:configChanges="orientation|screenSize"/>
<activity android:name=".Listen"
android:configChanges="orientation|screenSize"/>
<activity android:name=".See"
android:configChanges="orientation|screenSize"/>
<activity android:name=".Study"
android:configChanges="orientation|screenSize" />
1 ответ
Несмотря на то, что интернет говорит вам, вы никогда не должны использовать android:configChanges
атрибут для подавления нормального жизненного цикла действий Android. Вместо этого вы должны работать внутри системы, как обычно.
Из собственной документации Google:
Примечание. Следует избегать использования этого атрибута и использовать его только в качестве крайней меры. Пожалуйста, прочитайте Обработка изменений времени выполнения для получения дополнительной информации о том, как правильно обрабатывать перезапуск из-за изменения конфигурации.
В вашем случае это означает решение другой проблемы, которую вы упомянули:
если бы я воспроизводил звук, он продолжал бы воспроизводиться, и у меня не было бы способа приостановить воспроизведение звука, который воспроизводился при первом его запуске.
Я бы порекомендовал открыть новый вопрос с подробной информацией о том, как вы запускаете / останавливаете воспроизводимый звук, и с информацией о том, в чем именно заключается "проблема". Я подозреваю, что правильный способ справиться с этим - переместить обработку звука в сохраненный фрагмент, но пока я ничего не могу сделать, кроме предположения.