从BroadcastReceiver我想调用一个没有图形的活动。没有图形,因为它会说一些话。
Intent iSpeechIntent = new Intent(context, TTS.class);
iSpeechIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(iSpeechIntent);
但活动周期未正确完成。永远不会执行onDestroy()
方法。为什么呢?
@Override
public void onDestroy() {
// Don't forget to shutdown!
if (tts != null) {
tts.stop();
tts.shutdown();
}
super.onDestroy();
}
如果我使用没有图形XML的活动只是为了用TTSEngine讲一些文字,那就没关系了吗?
答案 0 :(得分:2)
你误解了Activity lifecycle。当您的活动被解雇时,onDestroy()
会被非调用。并且解雇它(即通过开始另一个活动) NOT 等同于销毁活动(但是你可以通过调用finish()
强制销毁活动 - 然后你的onDestroy()
方法将是调用)。您可能希望将代码分别移至onPause()
和onResume()
,或者您可以使用IntentService代替,如果您需要任何用户界面来执行此任务。
答案 1 :(得分:1)
我建议将Android服务用于此类任务http://developer.android.com/reference/android/app/Service.html。