Android 文本到语音和方向变化
我的应用程序大量使用了Android 文本到语音和方向变化,android,orientation,text-to-speech,Android,Orientation,Text To Speech,我的应用程序大量使用了文本到语音API 这是一个引导玩家频繁改变方向的游戏。我有不同的纵向和横向布局,这是确定的 我使用onretainonconfigurationinstance()和onCreate()来保持状态 但是,有一个事实会导致问题: 我正在调用ondestory()中的tts.shutdown(),我认为这是正确释放资源所必需的。但是,当用户更改方向时,这会导致当前文本和所有排队消息丢失。由于文本到语音对象在“旧的”活动上有一个引用,因此我无法将其转移到新活动 如何解决这个问题?
文本到语音API
这是一个引导玩家频繁改变方向的游戏。我有不同的纵向和横向布局,这是确定的
我使用onretainonconfigurationinstance()
和onCreate()
来保持状态
但是,有一个事实会导致问题:
我正在调用ondestory()
中的tts.shutdown()
,我认为这是正确释放资源所必需的。但是,当用户更改方向时,这会导致当前文本和所有排队消息丢失。由于文本到语音对象在“旧的”活动上有一个引用,因此我无法将其转移到新活动
如何解决这个问题?这对类很有用,您可以在
onCreate()
中启动TTS(忘记它,因为onTerminate()不是在实际设备上调用的)。这对类很有用,您可以在onCreate()
中启动TTS(忘记它,因为onTerminate())在实际设备上未调用。)谢谢,但我需要startActivityForResult()方法来检查TTS,如中所示。有没有办法从服务中获取此方法?TTS有两个阶段1)初始化+关闭2)对话。1.这是我建议在全球范围内每次启动一次。2.仍然可以在单独的活动中完成。但我可能误解了你的意思。这里有一个潜在的内存泄漏。TTS对象是通过对上下文的引用创建的。如果TTS对象在配置更改之间被保留,并且它是以活动作为上下文创建的,那么这将导致内存泄漏(如所述)。也许可以使用应用程序对象作为上下文,尽管我还没有尝试过。谢谢,但我需要startActivityForResult()方法来检查TTS,如中所示。有没有办法从服务中获取此方法?TTS有两个阶段1)初始化+关闭2)对话。1.这是我建议在全球范围内每次启动一次。2.仍然可以在单独的活动中完成。但我可能误解了你的意思。这里有一个潜在的内存泄漏。TTS对象是通过对上下文的引用创建的。如果TTS对象在配置更改之间被保留,并且它是以活动作为上下文创建的,那么这将导致内存泄漏(如所述)。也许可以使用应用程序对象作为上下文,尽管我还没有尝试过。