diff --git a/android/src/com/reecedunn/espeak/TtsService.java b/android/src/com/reecedunn/espeak/TtsService.java index 6ab421d5..6b0ec99f 100644 --- a/android/src/com/reecedunn/espeak/TtsService.java +++ b/android/src/com/reecedunn/espeak/TtsService.java @@ -76,6 +76,14 @@ public class TtsService extends TextToSpeechService { super.onCreate(); } + @Override + public void onDestroy() { + super.onDestroy(); + if (mBroadcastReceiver != null) { + unregisterReceiver(mBroadcastReceiver); + } + } + /** * Sets up the native eSpeak engine. */ @@ -100,8 +108,17 @@ public class TtsService extends TextToSpeechService { @Override protected int onIsLanguageAvailable(String language, String country, String variant) { if (!CheckVoiceData.hasBaseResources(this) || CheckVoiceData.canUpgradeResources(this)) { - final IntentFilter filter = new IntentFilter(DownloadVoiceData.BROADCAST_LANGUAGES_UPDATED); - registerReceiver(mBroadcastReceiver, filter); + if (mBroadcastReceiver == null) { + mBroadcastReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + initializeTtsEngine(); + } + }; + + final IntentFilter filter = new IntentFilter(DownloadVoiceData.BROADCAST_LANGUAGES_UPDATED); + registerReceiver(mBroadcastReceiver, filter); + } final Intent intent = new Intent(this, DownloadVoiceData.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -295,10 +312,5 @@ public class TtsService extends TextToSpeechService { /** * Listens for language update broadcasts and initializes the eSpeak engine. */ - private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - initializeTtsEngine(); - } - }; + private BroadcastReceiver mBroadcastReceiver = null; }