0

从 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 说出一些文本,可以吗?

4

2 回答 2

2

您误解了Activity 生命周期onDestroy()关闭您的活动时不会调用。并且解除它(即通过启动另一个活动)并不等于破坏活动(但是您可以通过调用强制破坏活动finish()- 然后onDestroy()将调用您的方法)。您可能希望将代码分别移动到onPause()和 ,onResume()或者如果您确实需要任何 UI 来完成任务,您可能应该使用IntentService 。

于 2012-09-06T20:19:57.883 回答
1

我建议将 Android 服务用于此类任务http://developer.android.com/reference/android/app/Service.html

于 2012-09-06T20:15:20.317 回答