Android 关闭应用程序时出现问题

Android 关闭应用程序时出现问题,android,Android,我正在从事一个android项目,我对关闭问题有点问题。我的问题是,我想在关闭应用程序之前使用文本到语音转换。但它只是关闭,而不是讨论如何修复这种情况。这是我的代码 if (item.getTitle()== "ExitItem"){ say("Bye Master,May The Force Be With You"); finish(); 我相信这很容易,但因为时间太晚了,我再也不能正确思考了:DD,祝你今天过得愉快

我正在从事一个android项目,我对关闭问题有点问题。我的问题是,我想在关闭应用程序之前使用文本到语音转换。但它只是关闭,而不是讨论如何修复这种情况。这是我的代码

    if (item.getTitle()== "ExitItem"){

            say("Bye Master,May The Force Be With You");

                finish();
我相信这很容易,但因为时间太晚了,我再也不能正确思考了:DD,祝你今天过得愉快

    public void say(String text2say){
    talker.speak(text2say, TextToSpeech.QUEUE_FLUSH, null);
}

@Override
    public void onInit(int status) {

}
@Override
public void onDestroy() {
    if (talker != null) {
        talker.stop();
        talker.shutdown();
}                   

我不确定这是否能完全解决问题,您只发布了一部分代码,但我注意到的第一件事是您使用==来比较字符串,这是一种糟糕的做法

尝试将其更改为:

if (item.getTitle().equals("ExitItem") {
另外,如果say方法是异步执行的,那么finish可能会在say方法有机会执行任何操作之前被调用和执行

编辑:由于它是异步完成的,所以您将希望使用onutternancecompleted来捕获何时说了文本到语音短语

TextToSpeech tts = new TextToSpeech(context, new OnInitListener() {

 @Override
 public void onInit(int status) {

    mTts.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener() {

        @Override
        public void onUtteranceCompleted(String utteranceId) {

            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    finish();
                }
            });
        }
    });

 }
});

ONutternanceCompleted和ONutternanceProgress将帮助您跟踪通话进度。相应地放置finish。

非常感谢您提供的信息。我更改了if状态。很抱歉,我不明白,我的意思是,我们对java代码有一个进程优先级,您知道上层代码在同一类或方法中首先执行。那么我是否必须指出或编写一些东西来修复异步化问题??如果say方法是异步完成的,就像在AsyncTask中一样,您需要在中执行finish调用。你能发布更多的代码吗?上面代码的封闭函数和say方法会很有帮助。代码是用onOptionsItemSelected方法封闭的。say方法是更新的。什么是MTT?您还没有定义它,我无法将此块实现到onOptionsItemSelected方法很抱歉,我现在理解了答案。我的意思是unterrenceprogress如何帮助我你说得更具体些??看起来你找到了实现方法。祝你好运