Browse Source

TtsService: fix a 'leaked receiver' exception.

master
Reece H. Dunn 12 years ago
parent
commit
5ba4971d6b
1 changed files with 20 additions and 8 deletions
  1. 20
    8
      android/src/com/reecedunn/espeak/TtsService.java

+ 20
- 8
android/src/com/reecedunn/espeak/TtsService.java View File

@@ -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;
}

Loading…
Cancel
Save