我正在使用monodroid,但一个类似的java答案仍然有帮助。
我使用的是纵向布局和横向布局,因此,如果可能的话,我想使用android屏幕方向来自动销毁/创建活动。
我的应用程序正在使用TextToSpeech,因此在活动的OnPause()中,我正在停止它,当按下Home键或正在进行来电时,它工作得很好。但是,我不想停止用户在屏幕方向更改时发送的文本。
有没有一种简单的方法来检测这种变化,以便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();
}

最佳答案

正如其他人在对这个问题的评论中所说的,我认为您需要在这里自己处理配置更改。还有一些other configuration changes也会导致您的活动重新启动,例如显示设备的硬件键盘。
在mono for android中,您可以在ActivityAttribute中指定要处理的是哪一个:

[Activity(ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.KeyboardHidden)]
public class MainActivity : Activity

10-08 17:37