Обнаружение изменения ориентации экрана в OnPause()
Я использую MonoDroid, но эквивалентный ответ Java все еще может помочь.
Я использую книжный макет и ландшафтный макет, поэтому, если это возможно, я хочу использовать ориентацию экрана Android для автоматического удаления/создания действий.
Мое приложение использует TextToSpeech
, поэтому в OnPause()
я останавливаю его, что хорошо работает, когда нажата клавиша Home или происходит входящий вызов. Однако я не хочу останавливать TextToSpeech на изменении ориентации экрана от пользователь.
TextToSpeech
не прерывалось?
Код моей деятельности OnStop()
:
protected override void OnPause()
{
// I need this for Home key, intercepting phone calls, etc.
// But how can I prevent this for a screen orientation change?
// Need to enable screen orientation to get my portrait/landscape views
if(Text2Speech.IsTextToSpeechInitialised && Text2Speech.TextToSpeech != null)
Text2Speech.TextToSpeech.Stop();
base.OnPause();
}
1 ответ:
Как другие сказали в комментариях к этому вопросу, я думаю, что вы захотите сами справиться с изменениями конфигурации здесь. Есть и другие изменения конфигурации, которые могут привести к перезапуску вашей активности, например, раскрытие аппаратной клавиатуры устройства.
В Mono для Android вы можете указать, какой из них вы хотите обрабатывать самостоятельно в ActivityAttribute:
[Activity(ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.KeyboardHidden)] public class MainActivity : Activity