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();
    }

また、TTSEngineでテキストを話すためだけに、グラフィックXMLを使用せずにアクティビティを使用している場合は問題ありませんか?

4

2 に答える 2

2

アクティビティのライフサイクルを誤解しました。アクティビティが却下された場合は呼び出されonDestroy()ません。そして、それを却下する(つまり、別のアクティビティを開始する)ことは、アクティビティを破棄することと同じではありません(ただし、-を呼び出すことにより、アクティビティの破棄を強制できます。finish()その後、onDestroy()メソッドが呼び出されます)。タスクにUIが必要な場合は、コードをonPause()とにonResume()それぞれ移動するか、代わりにIntentServiceを使用する必要があります。

于 2012-09-06T20:19:57.883 に答える
1

このようなタスクにはAndroidサービスを使用することを提案しますhttp://developer.android.com/reference/android/app/Service.html

于 2012-09-06T20:15:20.317 に答える