为什么更改方向会触发另一次事件?

时间:2013-09-08 12:59:39

标签: android android-activity

我有一项活动,它使用文字转语音引擎大声说出文字。这是:

public class AfterPassword extends Activity implements OnInitListener {
    private TextToSpeech tts;
    private String message = "This message will be spoken out.";
    static final int TTS_CHECK_CODE = 0;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.afterpassword);
        tts = new TextToSpeech(this, this);
    }
    @Override
    public void onInit(int initStatus) {
        if (initStatus == TextToSpeech.SUCCESS) {
            tts.speak(message, TextToSpeech.QUEUE_FLUSH, null);
        }
    }
}

我面临的问题是,当说话结束时,用户改变屏幕方向时,会再次开始讲话。我想停止谈论方向改变。

2 个答案:

答案 0 :(得分:2)

当方向更改时,活动将被销毁并重新创建。这适用于所有UI组件。另一方面,服务保持定向更改。 Use an Intent Service并向其发布含有文字按摩的意图。您可以将TTS代码放在onHandleIntent()

答案 1 :(得分:1)

在方向更改时,应用程序将重新启动。尝试在更改方向之前保存应用程序的状态,或者以纵向或横向模式锁定屏幕。