为了演示活动生命周期,我添加了TextToSpeech消息
mTts.speak ("<some text>", TextToSpeech.QUEUE_ADD, null);
了解我何时通过onCreate
,onResume
和onPause
。
调查结果:
在onCreate
中,您没有听到要说的文字(显然是因为活动尚未恢复?)。
在onPause中,所说的文字被肢解(显然是因为在说出文字的时候离开了活动?)。
构建循环
while(mTts.isSpeaking()){}
确保文字被完全说出来。
onResume
中的行为更加奇怪:
开始活动时,不会说出onResume
中的文字。
按下HW Home按钮并再次打开应用程序,即可使用onResume中的文字。
当然onResume
在两种情况下都会执行。事实上我分配了一个字符串
onResume
:speakOnResume
=“简历”
onCreate
:speakOnCreate
=“on create”
并在我调用的活动中添加了一个事件回调
mTts.speak (speakOnResume + " " + speakOnCreate, TextToSpeech.QUEUE_ADD, null);
当然这位女士按预期说话了
现在的问题是:
任何想法,为什么onResume
从头开始活动时表现不同v.s.什么时候(在这个词的意义上)在暂停而没有停止/摧毁之后恢复它?