У меня есть приложение, которое я настроил на отображение только в портретном режиме, установив
android:screenOrientation="portrait"
для каждого действия в манифесте. Это работает нормально, и экран моего приложения не поворачивается, когда я поворачиваю телефон.
Проблема в том, что если я запускаю приложение с телефоном в портретной ориентации, то когда запускается моя первая активность (анимированный экран-заставка), и я поворачиваю телефон в альбомную ориентацию, пока первая активность все еще работает, когда запускается следующая активность ( он запускается из блока finally потока первой активности) приложение закроется. Это не принудительный выход, он просто выходит на главный экран. В LogCat не создаются исключения или что-либо еще, что говорит о том, почему это происходит. Экран никогда не вращается (как и не должен). Если я запускаю приложение с телефона в альбомной ориентации, оно работает нормально. Это происходит только тогда, когда я начинаю с портрета, а потом поворачиваюсь к альбому.
я пробовал ставить
android:configChanges="orientation"
в каждой деятельности, и я также пытался
android:configChanges="orientation|keyboard|keyboardHidden|screenLayout"
Я пробовал вышеописанное с реализацией onConfigurationChanged и без нее в действиях. Когда я реализовал это, я просто проигнорировал его (просто вызвав super.onConfigurationChanged).
Я также попытался программно настроить активность на портретную ориентацию в дополнение к установке ее в манифесте.
Я также могу заставить это произойти на оригинальном Motorola Droid, запустив приложение с открытой физической клавиатурой и запустив приложение в автомобильной док-станции. Приложение запускается, заставка запускается в портретной ориентации (даже если клавиатура открыта или телефон находится в автомобильной док-станции), но как только запускается это второе действие, приложение закрывается.
Я не думаю, что это имеет какое-либо отношение к уничтожению Activity при изменении ориентации. Все мои глобальные данные хранятся в пользовательском классе приложения моего приложения, и, как я упоминал ранее, я не получаю исключений, таких как нулевой указатель, в случае уничтожения глобального объекта.
Я запускаю оригинал Motorola Droid на Verizon с Android 2.3.2.