Android: временно отключите изменения ориентации в действии

В моей основной деятельности есть некоторый код, который вносит некоторые изменения в базу данных, которые не должны прерываться. Я делаю тяжелую работу в другом потоке и использую диалог прогресса, который я установил как неотменяемый. Тем не менее, я заметил, что если я поворачиваю свой телефон, он перезапускает действие, которое ДЕЙСТВИТЕЛЬНО плохо для запущенного процесса, и я получаю Force Close.

То, что я хочу сделать, это программно отключить изменения ориентации экрана, пока мой процесс не завершится, в это время изменения ориентации разрешены.

113
задан dakshbhatt21 23 July 2013 в 12:51
поделиться

2 ответа

Как объяснил Крис в своем самоответе, вызов

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

, а затем

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

действительно работает как шарм... на реальных устройствах!

Не думайте, что он сломан при тестировании на эмуляторе, сочетание клавиш ctrl+F11 ВСЕГДА меняет ориентацию экрана, без эмуляции движений датчиков.

РЕДАКТИРОВАТЬ: это был не лучший ответ. Как объясняется в комментариях, с этим методом есть проблемы. Настоящий ответ здесь.

161
ответ дан 24 November 2019 в 02:39
поделиться

Я нашел ответ. Для этого в Activity вы можете вызвать setRequestedOrientation(int) с одним из указанных здесь значений: http://developer.android.com/reference/android/R.attr.html #screenOrientation

Перед тем, как начать тему, я вызвал setRequestedOrientation(OFF) (OFF = nosensor), а когда тема была завершена, я вызвал setRequestedOrientation(ON) (ON = датчик ). Работает как шарм.

14
ответ дан 24 November 2019 в 02:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: